Version complète: sur le forum Webmaster Hub : Comment on écrit "contient" en php
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Asgard
Bonjour,
Au risque de passer pour un gros newbie du PHP (ce qui est le cas), je préfère vous demander...
En fait voilà, je voudrais savoir comment on peut écrire l'équivalent de "contient le string" en php... Par exemple voici à quoi ressemble mon code:

CODE
<?php
if ( ($mavariable != "domaine1.com")
&& ($mavariable != "domaine2.fr")
   && ($mavariable != "domaine3.net") )
   {
mafonction...
   }
?>

Par quoi dois-je remplacer le symbole != pour que ma fonction s'applique pas seulement à "domaine1.com", mais aussi à "sousdomaine.domaine1.com" ou à "mondomaine1.com"?
Je ne sais pas si je suis très clair, alors excusez-moi d'avance... J'espère que vous voyez ce que je demande smile.gif

Merci d'avance
NorSeb
Salut,

Tu peux utiliser la fonction ereg() qui cherche un bout de chaine dans une autre.

Dans ton cas ca donnerai :

CODE
if (!ereg($mavariable, "domaine1.com") && !ereg($mavariable, "domaine2.com") && ...) {
 // ta fonction
}

Dans ce cas tu teste la chaine $mavariable est présente dans "domaine1.com" et domaine2.com
TheRec
Bonjour,

la solution proposée par NorSeb fonctionne mais il est tout de meme conseillé d'utiliser des fonctions moins lourde pour une tâche aussi simple, préfère un strpos :

CODE
if ((strpos($mavariable, "domaine1.com") === false) && (strpos($mavariable, "domaine2.com") === false) && ...) {
// ta fonction
}

Le résultat est le même, mais au niveau performance c'est préférable...si tu te sent plus à l'aise avec les ereg ce n'est pas si grave wink.gif (Mais en fait tu ferais mieux d'utiliser preg_match si tu as besoin d'expression rationnelles, c'est un conseil tiré du manuel PHP, pour une raison de preformances et aussi parce que les "preg" sont plus puissantes)

P.S. : Note "===" qui est un opérateur d'égalité identique, car strpos peut retourner la valeur entière (int) 0 , qui correspond à la position du premier caractère e la chaîne... et lorsque qu'aucune occurence n'est trouvé strpos va retourner "false" est équivalente à 0 en entier, il faut donc s'assurer que la réponse est === false et non juste == à false ... (=== vérifie que les type des variables comparés soient identiques... alors que == s'occupe d'interpréter les valeurs pour les comparer).
Asgard
Merci à vous pour vos réponses...
Je vais essayer selon vos conseils smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.