Необходимо сделать все ссылки внутренними через скрипт например
<a href="http://google.com">Ссылка должна быть закрыта</a>
должна превратиться в
<a href="http://site.ru/go.php?url=http://google.com">Ссылка должна быть закрыта</a>
Но это не должно коснуться ссылок этого же домена записанных в абсолютном виде
<a href="http://site.ru/">Ссылка не должна быть закрыта</a>
И внутренних ссылок типа:
<a href="/contact">Ссылка не должна быть закрыта</a>
А также ссылок с определенным классом
echo '<a href="http://google.ru" class="link">Ссылка не должна быть закрыта</a>';
Вот что получилось сделать:
ob_start(f_callback);
echo '<a href="http://google.com">Ссылка должна быть закрыта</a>';
echo '<br>';
echo '<a href="http://site.ru/">Ссылка не должна быть закрыта</a>';
echo '<br>';
echo '<a href="/contact">Ссылка не должна быть закрыта</a>';
echo '<br>';
echo '<a href="http://google.ru" class="link">Ссылка не должна быть закрыта</a>';
function f_callback($buffer){
$pattern = '~(<a[a-z\-_\s\"\#\=]*)(href=")((https?|ftp)://)~i';
$replace = '$1$2http://site.ru/go.php?url=$3';
$buffer = preg_replace($pattern, $replace, $buffer);
return $buffer;
}
Данный код закрывает все ссылки за исключением внутренних. Как написать условие в регулярном выражении исключающее ссылок начинающихся с текущего домена, и имеющих определенный класс