Задача: пользователь пишет в окошко текст, внезапно на него находит желание поставить ссылочку на ЛОР, пользователь не дурак и сходу [ url=http://linux.org.ru ] годный сайт [ /url ] (без пробелов, разумеется). При сохранении этого дела в бд, соответствующий скрипт заменяет все спецсимволы на их HTML-представление, далее, при отображении..
Реализация: очевидная реализация — регэкспы (я в них дно, как положено, но в гугл меня пускают пока, сделал)
$res = preg_replace("#\[url=(.+?)\](.+?)\[\&\#47\;url\]#isU",
'<script type="text/javascript">document.write(\'<a href="\\1">\\2</a>\');</script>', $res);
Немного поясню: скрипт заменяет bb-код не на HTML-код вида
<a href="http://linux.org.ru">годный сайт</a>
а на JavaScript-код, который, в свою очередь, выводит с помощью document.write() уже HTML-код. Это сделано в целях гнустного SEO.
Проблема: оно, в принципе, работает, только когда ссылка одна на странице, когда их две и более, все интерпретируется некорректно: будто первый открывающий тег — это единственный открывающий тег, а последний закрывающий, в свою очередь — единственный закрывающий, а все, что между ними — тело ссылки.
Думаю, тут проблема в кривом регэкспе, но сам разобраться не смог. Эни айдиас?