ГлавнаяБлогПарсинг прямых ссылок

Парсинг прямых ссылок

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
8 января 2010 г.
1 мин чтения

Программирование, как и искусство — одно слово, за которым скрывается бесконечное множество занятий.

Задача: заменить все прямые ссылки на странице на перенаправляющие 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;
}