BBCODE,preg_replace和双引号

时间:2011-10-03 07:49:30

标签: php regex preg-replace bbcode quote

preg_replace('/\[quote\=(.*?);(.*?)\](.*?)\[\/quote\]/ms', '<blockquote>Posted by: \1 at \2.<br/>\3</blockquote>', $text);

这是我用来替换[quote=user;id]content[/quote] bbcode的方法。无论如何,如果帖子中有一个引用,它只能正常工作。

如果我得到了:

[quote=user1;1] [quote=user0;0]some content here[/quote]

this is my reply to user0 post[/quote]

它只会替换第一个引号,而其他引号只会被<blockquote>替换。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

测试,修复版

<?php
$out = '[quote=user1;1] [quote=user0;0]some content here[/quote]this is my reply to user0 post[/quote]';
$cnt = 1;
while($cnt != 0){
    $out = preg_replace('/\[quote\=(.*?);(.*?)\](.*?)\[\/quote\]/ms', '<blockquote>Posted by: \1 at \2.<br/>\3</blockquote>', $out, -1, $cnt);
}
echo $out;

http://codepad.org/3PoxBeQ5