Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: lulu44 le le 17-06-2012 a 18:33:54

Titre: Détection de balise regex
Posté par: lulu44 le le 17-06-2012 a 18:33:54

Bonjour,
Question toute simple mais sans réponse pour moi. je cherche à colorer le code html qu'un utilisateur aurait rentré.

Pour cela je récupère la valeur du champ et la fait passer par htmlspecialchars stripslashes et nl2br. ensuite à l'aide de preg_replace je souhaite colorer les balises(<a></a>) en orange. pour l'instant j'ai:

$chaine = preg_replace("#(<[a-z0-9]>)#", "<span class='orange'>$1</span>", $chaine);

Ceci marche avec du bbcode si je change <> par [] dans le texte et le regex mais avec < et > cela ne fonctionne plus ! comment faire.

Titre: Re:Détection de balise regex
Posté par: lulu44 le le 17-06-2012 a 23:33:14

Je ne veux pas m'avancer mais je crois que c'est htmlspecialchers qui change la valeur de < et >, il faut peut etre les annoncer avec un caractère special mais lequel ? sachant que je ne veux pas que les balises soient interprétées :p

Titre: Re:Détection de balise regex
Posté par: lulu44 le le 18-06-2012 a 01:52:23

Pour ceux qui cherchent, j'ai trouvé la solution sur le site officiel du php. htmlspecialchars transforme le code html en notation spécifiques tel que < devient "&lt;"
je vous passe le lien de toutes les transformations pour vous faire une idée :) : http://php.net/manual/fr/function.htmlspecialchars.php .

du coup mon expression régulière donne:
$code = preg_match('#&lt;[a-z0-9]{1,}&gt;#i', '<span class="orange">$1</span>', $code);

Et ça fonctionne !!! :D


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.