Найти ссылку на странице

Статус
В этой теме нельзя размещать новые ответы.
еще лучше (хоть и не понятней на первый взгляд)

Код:
preg_match("#
	<a \s+ [^<>]*
		\bhref=
			(['\"]?)
				[url]http://domain\.ru(/[/url][^'\"\s]*?)?
			\\1
	[^<>]* >
	#isx", $body);
 
хорошо бы еще добавить проверку на noundex и nofollow
 
Код:
// убираем комментарии
$body = preg_replace("#<\!\-\- .*? \-\->#xsi", '', $body);

// убираем лишние теги
foreach(array('noindex', 'script', 'style', 'noframes', 'noscript') as $tag)
$body = preg_replace("#
	< $tag [^>]*>
	(
		(?: [^<] | <(?! $tag [^>]*>) | (?R) )+?
	)
	</ $tag >
	#xsi", '', $body);

if (
	// ищем нашу ссылку
	preg_match("#
		<a \s+ [^<>]*
			\bhref=
				(['\"]?)
					[url]http://domain\.ru(/[/url][^'\"\s]*?)?
				\\1
		[^<>]* >
		#isx", $body, $matches)
	&&
	// и чтоб без намека на nofollow
	! preg_match("#nofollow#is", $matches[0])
	)
{
	print "oke\n";
}
 
если конечно скрипт будет использовться для посковой системы.

Если скрипт пишется для каталога "Проверка обратной ссылки на каталог". то нужно ещё проверять что бы не было домена в адресе url

типа Для просмотра ссылки Войди или Зарегистрируйся иначе это может стоять скрипт генерации обратных ссылок.

И второе, при проверке представляться, например yandex, возможно стоит клоакинг для защиты от поисковиков.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху