Текущий Я создаю функцию bbCodes, чтобы заменить все bbCodes соответствующими HTML-кодами в тексте. Мой код работает следующим образом:
public function bbCodes($text) {
global $bb_codes;
$text = preg_replace(array_keys($bb_codes), array_values($bb_codes), $text);
return $text;
}
где $ bb_codes выглядит так:
$bb_codes = array(
"/\[b\](.*)\[\/b\]/is" => "<b>$1</b>",
"/\[u\](.*)\[\/u\]/" => "<u>$1</u>",
"/\[i\](.*)\[\/u\]/" => "<i>$1</i>",
"/\[d\](.*)\[\/d\]/" => "<del>$1</del>",
"/\[url=(.*)\](.*)\[\/url\]/" => "<a href='$1'>$2</a>"
);
Это работает, когда каждый bbcode используется только один раз, например ::10000
[b]this text is bold[/b]
[i]this text is italic[/i]
etc..
Но как только я несколько раз использую один тег bbcode, он портится:
[b]this text is bold[/b]
[i]this text is italic[/i]
[b]this text is bold too[/b]
Он увидит первый тег [b] и будет искать другой тег [/ b], но он возьмет последний вместо первого, с которым встречается (в приведенном выше примере весь текст будет выделен жирным шрифтом, а первый - [b] ] и последний [/ b] будет заменен только). Кто-нибудь знает, что я сделал не так и как я могу это исправить?
Спасибо заранее!
Приветствие.