function f_callback buffer pattern a-z -_ href https ftp site ru class

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function f_callback($buffer)
{
$pattern = '~(<a[a-z\-_\s\"\#\=]*)(href=")((https?|ftp)://(?!site.ru|[^"]*"\s+class="link"))~i';
$replace = '$1$2http://site.ru/go.php?url=$3';
$buffer = preg_replace($pattern, $replace, $buffer);
return $buffer;
}
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>';