Demander à PHP d'ignorer une partie d'une chaine

Dark Templar

Ex-vénérable sage
Club iGen
24 Avril 2002
16 898
1 044
Toujours là
www.pontida.fr
Alors là je suis vraiment perdu :confused:

J'ai un filtre qui me remplace une chaîne du type :nom dans un texte par l'image :nom.gif avec un fonction de la forme strreplace($code, $image, $chaine).
Normalement ça ne pose pas de problèmes car la chaîne est au préalable modifiée pour suivre les règles de la ponctuation française (un espace après les deux points).
Cependant, si quelqu'un rajoute un lien vers un adresse email ça donne mailto:truc et là si j'ai par malheur une smiley :t ça fait tout foirer.
Donc j'aimerais savoir si on peut demander à PHP d'ignorer certaines balises et leur contenu (a et code par exemple).

Merci d'avance,
Dark
 
Avec l'utilisation de preg_replace et d'une bonne expression régulière, ça devrait le faire non ?
 
Hm.. j'ai essayé d'y réfléchir mais malheureusement, j'ai vraiment pas l'habitude des expressions régulières. Mais le but serait de lui faire comprendre qu'il faut remplacer tout les ":nom" qui ne sont pas précédés directement par un mailto.

preg_replace("/(mailto){0}:)nom)/", "/<img src=\"...\">/", $chaine);

Ca m'étonnerait que le code ci-dessus fonctionne, mais ça peut peut-être te montrer sur quelle voie chercher.

Sinon, il me semble qu'il y a plus simple pour ton problème, c'est simplement faire en sorte de remplacer " :nom " par ton smiley et non pas ":nom". Donc qu'il soit entouré d'espace des 2 cotés pour le remplacer. Il me semble que c'est comme ça qu'ils font sur les forums.