BBCode解析报价

时间:2012-05-20 14:49:32

标签: php regex bbcode

好的,我正在尝试为我的自制论坛创建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来解决它。有帮助吗? :/

1 个答案:

答案 0 :(得分:0)

.*将消耗尽可能多的费用。将其更改为.*?将使其消耗尽可能少,这应该可以解决问题...只要您不考虑嵌套引号。

我认为,更好的解决方案是使用this post的答案,而不是发明自己的答案。