regex preg_match - 带填充数组的未定义偏移量

时间:2015-05-04 14:02:57

标签: php arrays regex preg-replace preg-match

我正在尝试用正则表达式解析BBCode引用。我的引用有一些变量,我想将它们存储在PHP变量中,所以我稍后可以在代码中使用它们。

我的BBCode报价如下:

[quote=user;post_id] TEXT [/quote]

我的PHP代码:

function parseQuote($text) {
        $pattern = '/\[quote=(.*?);(.*?)\](.*?)\[\/quote\]/'; // quote regex
        preg_match($pattern, $text, $match );
        $quote_text = $match[3]; // get the text

        $replace = '
            <blockquote class="posttext-blockquote">
                <div class="posttext-blockquote-top">
                    <i class="fa fa-caret-up"></i> $1 said:
                </div>

                <div class="posttext-blockquote-bottom">
                    '.$quote_text.'...
                </div>
            </blockquote>'; // make the replace text, $quote_text will be used to check things later

        return preg_replace($pattern,$replace,$text); // return parsed
    }

我面临的问题是,即使$ match数组填充了数据,它仍然会给我Notice: Undefined offset: 3警告,但在我的网页上,它确实给了我引用文本。< / p>

当我print_r($match)时,它会给我这个:

Array ( [0] => [quote=poepjejan1;15]Why can't I be a piggy :([/quote] [1] => poepjejan1 [2] => 15 [3] => Why can't I be a piggy :( ) 1

我已经尝试了各种各样的东西,但它一直给我一个无法解决的偏移误差。我在这里做错了什么?

P.S。我是regex的新手。

0 个答案:

没有答案