Bonjour, dans un script PHP, je veux remplacer des mots par des liens vers les fiches de ces mots. Tout est ok, tout fonctionne sauf un petit bug sur les mots accentués.
En simplifiant le tout, voilà un exemple :
En gros, je veux que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $texte = 'martin martine martinez gagné gagnée gagnées pétard pétarde'; $texte = preg_replace('#\bmartin\b#', 'ok1', $texte); $texte = preg_replace('#\bgagné\b#', 'ok2', $texte); $texte = preg_replace('#\bgagnée\b#', 'ok3', $texte); $texte = preg_replace('#\bpétard\b#', 'ok4', $texte); //Affiche : ok1 martine martinez gagné ok2e ok2es ok4 pétarde echo $texte;
- "martin" (et pas "martine" et "martinez") soit remplacé par "ok1"
- "gagné" (et pas "gagnée" et "gagnées" soit remplacé par "ok2"
- "gagnée" soit remplacé par "ok3"
- "pétard" (et pas "pétarde") soit remplacé par "ok4"
Le code ci-dessus me semble bon. Les \b \b permettent d'éviter justement que martine et martinez soit changés en ok1.
Pour "martin" et "pétard", tout se passe comme je peux.
Mais pour "gagné", ça déconne. Le mot qui devrait être pris en compte ne l'est pas. Pire, les mots qui ne devraient pas être pris en compte (grâce au \b \b), le sont !
Quelqu'un a une idée, une piste ? Merci d'avance.
Partager