note 91019 deleted from function.preg-replace by danbrown
| From: | danbrown@php.net | Date: | Thu, 21 May 2009 12:50:15 +0000 |
| Subject: | note 91019 deleted from function.preg-replace by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-155834@lists.php.net to get a copy of this message | ||
Note Submitter: Jacques
----
en PHP 5: Pour l'interprétation des BBcode, il faut un masque non gourmand, donc il fait
utiliser les modificateurs
x = PCRE_EXTENDED: sinon la séquence (.*?) n'est pas évaluée correctement
g = PCRE_GLOBAL: sinon le remplacement s'arrête après la première occurrence.
si le texte comporte des retour à la ligne, on utilisera m = PCRE_MULTILINE
voici un exemple fonctionnel
$bbcode = array(
"/\[b\](.*?)\[\/b\]/mxg" => "<b>$1</b>",
"/\[u\](.*?)\[\/u\]/mxg" => "<u>$1</u>",
"/\[url\=(.*?)\](.*?)\[\/b\]/mxg" => "<a
href='$1'>$2</a>"
);
$text = "[b]Text[/b][u]Text[/u]";
$text = preg_replace(array_keys($bbcode),
Pour vous aider a mettre au point les regexp, il existe quelques logiciels spécialisés comme
RegExpBudy (commercial), RegexCoach (propriétaire mais gratuit...) et JH RegExp Builder qui est
meilleur car il prend en charge toute les syntaxes et sous licence libre (c'est celui que
j'utilise).