BBCODE, preg_replace и двойные кавычки - PullRequest
0 голосов
/ 03 октября 2011
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 Ответ

1 голос
/ 03 октября 2011

проверено, отремонтировано версия

<?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

...