preg_replace: BB-код в HTML-URL

0

У меня есть небольшой скрипт, который заменяет код BB кодом HTML. Все работает отлично, но URL-адреса.

$bbextended = array(
"/\[URL=(.*?)\](.*?)\[\/URL\]/i" => "<a href=\"$1\" title=\"$1\">$2</a>"
);

foreach($bbextended as $match=>$replacement){
$bbtext = preg_replace($match, $replacement, $bbtext);
}

вход

[URL="http://somewebsite.come/something"]Some Website Title[/URL]

Вывод

<a href=""http://somewebsite.come/something"" title=""http://somewebsite.come/something"">Some Website Title</a>

Существуют двойные кавычки, которые, очевидно, не так хороши.

Я пытался

$bbextended = array(
"/\[URL=\"(.*?)\"\](.*?)\[\/URL\]/i" => "<a href=\"$1\" title=\"$1\">$2</a>"
);

в коде, но это не сработало. Я также попытался оставить знак выхода и процитировать около $1 в коде HTML, но он не сработал.

Есть идеи?

Теги:
bbcode

2 ответа

1

Для этого вы должны использовать настоящий парсер, например jBB http://jbbcode.com/

0

Когда я

Установите строку поиска = '/\[URL="(.*?)"\](.*?)\[\/URL\]/i'
а также
Установите замену string = '<a href="$1" title="$1">$2</a>'

Я получаю это, используя простой preg_replace

<a href="http://somewebsite.come/something" title="http://somewebsite.come/something">Some Website Title</a>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню