Задать вопрос
@strelov1

Как закрыть все ссылки на сайте за исключением узказнных?

Необходимо сделать все ссылки внутренними через скрипт например
<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;
}

Данный код закрывает все ссылки за исключением внутренних. Как написать условие в регулярном выражении исключающее ссылок начинающихся с текущего домена, и имеющих определенный класс
  • Вопрос задан
  • 378 просмотров
Подписаться 3 Комментировать
Подписчики вопроса 3 К ответам на вопрос (1)