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);
}

投稿ごとに1つの見積もりがある場合はうまく機能しますが、それ以上の場合は問題が発生します。それは明らかにルート引用から始まり、それ自体で正確な終了タグを選択するわけではありません。そして、私はそれを修正するのに十分な正規表現の経験がありません。何か助けはありますか?:/

4

1 に答える 1

0

.*可能な限り消費します。に変更すると.*?、可能な限り消費が少なくなり、問題が解決するはずです...ネストされた引用符を考慮しない限り。

より良い解決策は、自分で発明するのではなく、この投稿への回答を使用することだと思います.

于 2012-05-20T14:56:35.423 に答える