Expression rationnelle

devlop78
Invité n'ayant pas de compte PHPfrance

17 mai 2010, 12:29

Bonjour,

Je cherche une expression rationnelle qui me permettrait de remplacer tous les ":)" dans un texte HTML sauf s'il est compris dans des balises (dans un attribut title par exemple). J'ai pensé à un truc comme /[^<](.*):)(.*)[^>]/U mais je sais déjà que ça ne va pas fonctionner ... ^^

Merci d'avance :)

ViPHP
ViPHP | 928 Messages

17 mai 2010, 14:15


devlop78
Invité n'ayant pas de compte PHPfrance

17 mai 2010, 14:57

Merci, Nickel !

Code : Tout sélectionner

<?php $mavar = "<p><strong id=':)'>les :) sont des sourires :(</strong></p>"; function replace_Smiley($capture) { $de = array(':)',':('); $par = array('content', 'pas content'); return str_replace($de, $par, $capture[1]).$capture[2]; } echo preg_replace_callback('#((?:(?!<[/a-z]).)*)([^>]*>|$)#si', 'replace_Smiley', $mavar); ?>