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