正则表达式匹配和替换BB代码报价

时间:2012-08-23 20:12:18

标签: php regex

我希望匹配这样的字符串:

[quote12445555=Me]Some \n Quote[/quote12445555]

并将其替换为:

<blockquote>Some \n Quote</blockquote>

我的正则表达式如下:

!\[quote(\d+)=(\w+)\](.*|\r\n|\n)\[\/quote(\d+)\]!

替换为:

<blockquote>$3</blockquote>

但它似乎没有起作用

非常感谢任何帮助或建议。

3 个答案:

答案 0 :(得分:0)

$quotes = preg_replace('%\[(quote\d+)=([^\]]+)\]([^[]+)\[/\1\]%', '<blockquote>$3</blockquote>', $quotes);

答案 1 :(得分:0)

这似乎适用于我的测试:

\[quote[0-9]+=[a-zA-Z0-9]+\]((.|\n)*)\[/quote[0-9]+\]

尝试将(.*|\r\n|\n)更改为(.|\r\n|\n)*

正斜线是否需要转义? \/

我的替换字符串为:<blockquote>$1</blockquote>

答案 2 :(得分:0)

仅供参考,正确的正则表达式是:

'!\[quote(\d+)\=(\w+)\](.+?)\[\/quote(\d+)\]!is'