好的,我正在尝试为我的自制论坛创建bbcodes。它工作得很好,直到我开始使用引号。这是我的功能:
public function forum_parse ($string)
{
global $core, $path;
$string = $this -> normal_parse ($string);
$search = '/\[quote=([A-z0-9 -_\'"]+);([0-9]+)\](.*)\[\/quote\]/is';
$replace = '<div class="quote"><p class="quote-author"><a href="' . $path . 'forum/viewtopic?p=$2">' . WRITTEN_BY . ' $1</a></p><p class="quote-content">$3</p></div>';
return preg_replace ($search, $replace, $string);
}
当每个帖子有一个引号时它很好用,但是当有更多时,问题就开始了。它显然不是从根引号开始,而是单独选择准确的结束标记。我没有经验丰富的RegEx来解决它。有帮助吗? :/
答案 0 :(得分:0)
.*
将消耗尽可能多的费用。将其更改为.*?
将使其消耗尽可能少,这应该可以解决问题...只要您不考虑嵌套引号。
我认为,更好的解决方案是使用this post的答案,而不是发明自己的答案。