Задача состоит в том чтобы пропарсить контент и заменить все прямые ссылки вида
http://yunaliev.ru/
на http://yunaliev.ru/redirect.php?goto=http://yunaliev.ru/
В WordPress есть плагины для этого, которые делают все автоматически. Я не смотрел их код и как там реализовано не могу сказать, возможно чуть позже найду время для этого. В битриксе это нет к сожалению, по крайне мере я этого не нашел в стандартном API классе парсинга для форума и доп функциях для работы с текстом и html. Возможно решение не самое лучшее, но оно работает.
Мне очень нравится класс для парсинга html PHP Simple HTML DOM Parser именно его я использовал для решения этой задачи. Решение было нужно для форума битрикса, чтобы убрать все прямые ссылки:
Вот собственно сам код:
include ($_SERVER ["DOCUMENT_ROOT"] . '/simple_html_dom/simple_html_dom.php'); $html = new simple_html_dom(); # Строка $html->load('<a href="http://yunaliev.ru">http://yunaliev.ru</a>'); # Выбираем все теги <a> в массив $arObject = $html->find('a');</a> <a> # Преобразуем ссылку foreach ($arObject as $arValueObject) { $hrefValue = $arValueObject->href; $arValueObject->href = 'http://www.yunaliev.ru/redirect.php?link=' . <code>urlencode(</code>$hrefValue); }</a> <a> # Результат echo $html;</a>
Функция для битрикса. Ложим библиотеку в /bitrix/php_interface/lib/
function parserActivLinkGoTuRedirect($sMassagePost) { require ($_SERVER ["DOCUMENT_ROOT"] . "/bitrix/php_interface/lib/simple_html_dom.php"); $html = new simple_html_dom(); $html->load($sMassagePost); $arObject = $html->find('a'); foreach ($arObject as $arValueObject) { $hrefValue = $arValueObject->href; $arValueObject->href = '/bitrix/redirect.php?goto=' . urlencode($hrefValue); } return $html; }
Сам класс можно скачать тут