В 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/
Шёл 2017 год, данный класс не работает на новых версиях Битрикса, так как Битриксу нужен mbstring.func_overload 2, а этому классу mbstring.func_overload 0
<?php require_once('curlPro.php'); $cp = new curlPro; $cp->newip('domen.ru'); $cp->uri('/'); //$cp->https(true);//Если HTTPS соединение уберите комментарий в начале строки
$text = $cp->go();// Выполняем запрос получаем данные
var_dump($cp->getlinksarray());// То что Вам и нужно - массив ссылок, где элемент [0] - URL ссылки, [1] - текст ссылки внутри <a ...> </a>
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».