Аморфность - я заметил, что Герт отредактировал ваше сообщение.Являются ли два фрагмента кода точно в том виде, в каком вы их опубликовали?
Итак, хотя оригинальный код был разработан для выделения, я понимаю, что вы пытаетесь использовать его для генерации ссылок - он должени отлично работает для этого (проверено как опубликовано).
ОДНАКО экранирование в первом фрагменте кода может быть проблемой.
$text=Text->highlight($text,$tags,'<a href="/tags/\1">\1</a>',1);
Работает нормально ...но если вы используете речевые метки, а не кавычки, обратные слеши исчезают как escape-метки - вам нужно их избегать.Если нет, вы получаете% 01 ссылки.
Правильный путь с метками речи:
$text=Text->highlight($text,$tags,"<a href=\"/tags/\\1\">\\1</a>",1);
(обратите внимание на использование \ 1 вместо \ 1)