Aide - Recherche - Membres - Calendrier
Version complète : i mais pas i
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Fred...
Bonjour à tous !

J'ai un probleme qui est que je voudrais modifier une chaine sans tenir compte de la "casse" mais sans la modifier (la "casse")...

Par exemple si on part de :
CODE
$mon_texte = preg_replace("/\b".$mon_mot."\b/", "<span style='color: #0000ff;'>".$mon_mot."</span>", $mon_texte);

Je voudrais que si "$mon_mot" est "toto" et que je croise un ToTo, ça me renvoi ToTo...

Si quelqu'un a une idée, merci... biggrin.gif
ElMoustiko
J'avais fait ça pour un moteur de recherche :

CODE


eregi_replace($search, "<span class=\"critere_recherche\">\\0</span>", $chaine)



En adaptant ça devrait le faire wink.gif
Fred...
J'ai pas encore tout compris mais ça marche et c'est ce que je cherchait...
Merci beaucoup ! :wink:
ElMoustiko
regarde dans la doc, c'est assez bien expliqué wink.gif

ereg_replace()

le "i" c'est pour ne pas tenir compte de la casse.

Et le \\0 c'est une référence arrière à la chaine recherchée.
Fred...
C'est le \\0 que je ne connaissais pas.

Merci :wink:
ElMoustiko
En fait j'ai mal expliqué je pense.

\\1 serait référence à la $search, ça te mettrais donc toujours "toto" puisque ton $search c'est "toto"
Ca te trouverai ToTo aussi, mais le remplacerais par $search donc "toto".

\\0 te permet en fait d'utiliser le mot TROUVé (et non le mot RECHERCHé) à la place, donc ça te trouve les "toto" majuscule ou minuscule, mais ça écris le mot trouvé avec sa casse.

Voilà qui devrait être plus clair je pense.
Thanh
Quoi?!!!!
ElMoustiko
C'est pas ça ?

C'est comme ça que je l'avais compris :/

On dit Woupps là c'est ça ? ! :oops: :cry:
Thanh
Non moa j'ai rien compris ^^
ElMoustiko
Lol !!

Bon, j'explique ce que j'ai compris donc, enfin c'est comme ça que ça marche selon moi :

on a un motif à rechercher.
Ici $search = "toto";

On a une chaine qui contient des tas de trucs et des toto et des Toto et des ToTo et des tOto etc.
Donc $str = "bla toto bli tOto blu TotO ble ToTo blo";

finalement on fait :
CODE


$str = eregi_replace($search, '<span style="color: #f00">\\0</span>', $str);



Et donc, \\0 renvoi aux toto, tOto, TotO, ToTo, ce sont donc les mots trouvés dans $str qui correspondent à $search (donc n'importe quel toto quelque soit sa casse (grâce au "i" de eregi_replace)

Si on avait utilisé \\1, ça aurait écrit toto à la place tOto, TotO, ToTo parceque \\1 renvoi à $search qui n'est autre que toto

Voilà, en tout cas, c'est comme ça que je le comprend ^^

Plus clair là ? nan ? bon, bah je peux rien pour toi ! achète toi un décodeur de moustik !!
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.