Программирование, как и искусство — одно слово, за которым скрывается бесконечное множество занятий.
Задача: заменить все прямые ссылки на странице на перенаправляющие URL вида /redirect.php?goto=.... WordPress решает это плагинами, Bitrix — кастомным кодом.
Для парсинга использую библиотеку PHP Simple HTML DOM Parser (скачать на SourceForge).
Базовый пример
include($_SERVER["DOCUMENT_ROOT"] . '/simple_html_dom/simple_html_dom.php');
$html = new simple_html_dom();
# Строка
$html->load('http://yunaliev.ru');
# Выбираем все теги в массив
$arObject = $html->find('a');
# Преобразуем ссылку
foreach ($arObject as $arValueObject) {
$hrefValue = $arValueObject->href;
$arValueObject->href = 'http://www.yunaliev.ru/redirect.php?link=' . urlencode($hrefValue);
}
# Результат
echo $html;Функция для Bitrix
Размещается в /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;
}