Version complète: sur le forum Webmaster Hub : rechercher un bout de chaine
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
yankey
Bonjour, rolleyes.gif

Je bloque sur un truc qui doit être tout bête.

Je voudrai déterminer si un texte contient un morceau de chaine, c'est à dire si "Un message sur les forums" contient bien le morceau "%forum%"

J'ai essayé ceci:

CODE
$message = "Un message sur les forums"
$mots = array("forum",
"texte",
"etc");
if (in_array($message, $mots))
{
fait ceci
}
else
{
fait cela
}


mais ce script ne marche que si le message est "forum"...

et rien ne se passe non plus avec

CODE
if (strpos($message, $mots))


qu'est-ce qu'il faut mettre pour trouver un bout de chaîne ?
yankey
Je vais essayer avec des
if ((ereg("forum",$message)) or (ereg("texte",$message)))
...
Portekoi
Essaie avec strpos() : http://www.manuelphp.com/php/function.strpos.php
yankey
Ca marche, j'aurai bien aimé pouvoir me servir d'un tableau, mais bon ça marche comme ça.

C'est rien... j'étais juste de passage...

Bonne journée à tous rolleyes.gif
Nanane
Il suffit de faire une boucle (foreach) pour que ca fonctionne avec un tableau biggrin.gif
smile
if (eregi("forum|texte",$message))

Non sensible à la casse, c'est mieux smile.gif
Nanane
stripos() pour ne pas etre sensible a la casse. ca marche aussi happy.gif
yankey
Merci à vous.

En fait j'ai fais comme ça:

CODE
((ereg(" forum",$message)) and (ereg("forum ",$message)) or (ereg(" forum$",$message)) or (ereg("^forum ",$message)) or (ereg("^forum$ ",$message)))


je peux pas trop mettre dans un tableau finalement puiqu'il doit chercher certain mots entiers, d'autres non.

Avec ereg ça marche nickel apparemment, il me trouve bien tous les messages de type: "un forum", "forum", "forum du site", "un forum de site" c'est exactement ce que je cherchais. rolleyes.gif
brian85
Apparemment preg_match() est plus performant selon la doc php tongue.gif
Galeenet
preg_match et ereg sont déconseillées pour faire de la recherche simple, car gourmands (comme toujours avec les regex)
stristr ou strpos, avec une boucle, suffisent largement.
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.