Позвольте мне объяснить мою проблему до и после ...
У меня есть система комментариев в веб-сообществе. Пользователи могут вводить в текстовое поле все что угодно, включая специальные символы и теги HTML. В MySQL я сохраняю тело комментария в точности так, как оно напечатано, без какого-либо вмешательства. Однако при отображении я использую сущности HTML, чтобы пользователи не связывались с HTML:
<?= nl2br(htmlentities($comment['body'], ENT_QUOTES, 'UTF-8')) ?>
Это работает нормально. Однако сейчас я пытаюсь обогатить систему комментариев, автоматически преобразовав некоторые ссылки, размещенные внутри комментариев, в более богатые объекты. Это касается фотофорума, и иногда пользователи делают ссылки на другие фотографии, вставляя ссылки в комментариях:
http://www.jungledragon.com/image/12/eagle.html
Используя регулярные выражения, я заменяю действительные ссылки, подобные приведенным выше, на разметку. В этом случае он будет заменен тегом img, так что вместо ссылки пользователи увидят большой палец этого изображения непосредственно в комментарии.
Замена работает нормально. Однако, поскольку я использую htmlentities, разметка замены будет отображаться как текст, а не как визуализированное изображение. Здесь нет сюрпризов.
Мой вопрос: как я могу выборочно html кодировать тело комментария? Я хочу, чтобы эти ссылки не избежали замены, но все остальное следует избегать.