искать разные теги и заменять в одной функции preg_replace

У меня есть такая извлеченная запись из базы данных, где я хочу декодировать значения форматирования и заменить ее соответствующим тегом html, чтобы она нормально работала на дисплее:

[size=150:3a9xfsiy][color=#000080:3a9xfsiy]hello world[/color:3a9xfsiy][/size:3a9xfsiy]

Эта запись была создана phpBB, и я использую ее для отображения в другой части веб-сайта, неподконтрольной phpBB.

Я пытался использовать PREG_REPLACE, но вопрос в том, есть ли способ прочитать разные форматированные теги как один в регулярном выражении? пример:

[size=150:3a9xfsiy] and [/size:3a9xfsiy] must be searched in a single preg_replace

person Vainglory07    schedule 08.01.2013    source источник
comment
Почему вы не используете код BBCode, поставляемый с PHP? php.net/manual/en/book.bbcode.php   -  person Andy Lester    schedule 08.01.2013


Ответы (2)


<?
    $ret = 'I gave my Word to you Word.';
    $pattern = '/\bWord\b/i';
    $ret = preg_replace($pattern,"Heart",$ret);
    var_dump($ret);
?>

string(29) "Я отдал свое Сердце тебе, Сердце."

Или если это то, что вам подходит

Вы можете просто использовать str_replace:

$str = str_replace(array('<tag>', '</tag>'), array('<newtag>', '</newtag>', $str);
person soniccool    schedule 08.01.2013
comment
Просто замените свои теги там - person soniccool; 08.01.2013
comment
что, если значение $ret равно: $ret = 'Я дал вам свое Слово \Word.'; Можно ли по-прежнему использовать только одну preg_replace для Word и \Word? - person Vainglory07; 08.01.2013

Phpbb предоставляет для этого функцию. Generate_text_for_display. Когда вы извлекаете его из базы данных, включите функции phpbb и примените эту функцию.

Также вы можете использовать этот класс.

Подробнее об анализе текста.

person Shiplu Mokaddim    schedule 08.01.2013
comment
это встроено в phpBB, верно? Как я могу использовать его, если я собираюсь использовать его вне phpBB? - person Vainglory07; 08.01.2013
comment
Phpbb имеет открытый исходный код. Просто скопируйте файлы. - person Shiplu Mokaddim; 08.01.2013