Я делаю свой собственный парсер bbcode, и у меня проблема, когда я пытаюсь сделать рекурсивную цитату.PHP - BBCode parser - рекурсивный [quote] с regex и preg_replace
это мой код:
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;
}
, что я должен добавить/изменить, чтобы сделать рекурсивную цитату? других слов, когда цитата внутри другой цитаты ...
возгласов и Тое за помощь
Это довольно сложно, если вы новичок в регулярных выражениях. Рекурсивные регулярные выражения сложны, поэтому большинство людей выбирает флаг оценки/e и фактически имеет сгенерированное выражение «парсер» регулярного выражения в закрытом контенте. В любом случае, сначала прочитайте http://www.regular-expressions.info/ - это лучшее введение, чем руководство по PHP. – mario
Я узнаю это руководство, и я постараюсь сделать функцию :) Я сообщу вам, я надеюсь, что вы все равно сможете мне помочь! Тпй !!! – markzzz
Я думаю, что у вас есть два возможных способа решить это: a) пропустить содержимое и искать открывающие и закрывающие теги цитат и заменить их, если они были найдены (оставьте остальные как видимые bbcode) или b) используйте 'preg_replace_callback()' который снова вызывает себя, если найдены теги вложенных цитат. – mgutt