0

好的,我目前正在尝试为我的自制论坛创建 bbcode。它工作得很好,直到我开始引用。这是我的功能:

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 经验来修复它。有什么帮助吗?:/

4

1 回答 1

0

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

我相信,一个更好的解决方案是使用这篇文章的答案,而不是自己发明。

于 2012-05-20T14:56:35.423 回答