Je fais mon propre analyseur bbcode, et j'ai un problème quand j'essaie de faire la citation récursive.PHP - BBCode parser - récursif [quote] avec regex et preg_replace
ceci est mon code:
function forumBBCode($str){
$format_search=array(
'#\[quote=(.*?)\](.*?)\[/quote\]#is'
);
$format_replace=array(
'<blockquote class="quotearea"><i><a class="lblackbu" href="./index.php?status=userview&userv=$1">$1</a> wrote :</i><br />$2</blockquote>'
);
$str=preg_replace($format_search, $format_replace, $str);
$str=nl2br($str);
return $str;
}
ce que je dois ajouter/modifier pour faire une citation récursive? en d'autres termes, quand une citation se trouve dans une autre citation ...
acclamations et TNX pour l'aide
C'est assez difficile si vous êtes nouveau dans les expressions régulières. Les expressions rationnelles récursives sont délicates, donc la plupart des gens optent pour le drapeau d'évaluation/e et ont en fait la descente de l'analyseur "regex" dans le contenu inclus. Quoi qu'il en soit, lisez d'abord http://www.regular-expressions.info/ - c'est une meilleure introduction que le manuel PHP. – mario
je vais apprendre ce guide et je vais essayer de faire une fonction :) je vous le ferai savoir, j'espère que vous pouvez m'aider de toute façon! tnx !!! – markzzz
Je pense que vous avez deux façons de résoudre cela: a) parcourir le contenu et rechercher les guillemets d'ouverture et de fermeture et les remplacer si les deux sont trouvés (laissez le reste comme bbcode visible) ou b) utiliser 'preg_replace_callback()' qui s'appelle à nouveau si une balise de devis imbriquée a été trouvée. – mgutt