Проверка наличия ссылки на странице
Как проверить, содержит ли страница ссылку?
Иногда необходимо убедиться в том, что на конкретной странице действительно есть конкретная ссылка.
function contains_link($page_url, $link_url) {
// $page_url - страница на которй ищем
// $link_url - ссылка, которую ищем
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $page_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// в качестве User-Агента можно использовать имя бота поисковых систем для пущей надежности ;-)
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
$html = curl_exec($ch);
curl_close($ch);
if(!$html) return false;
/* убираем все комментарии */
$html = preg_replace('//i', '', $html);
/* Выдираем все ссылки */
$regexp='/(]*hrefs*=s*["']?)([^'" >]+)(['"]+[^<>]*>)/i';
if (!preg_match_all($regexp, $html, $matches, PREG_SET_ORDER)) {
return false; /* нет ссылки :-( */
};
/* Анализируем каждую ссылку */
foreach($matches as $match){
/* Если ссылка содержит атрибут rel=nofollow - пропускаем её */
if(preg_match('/rels*=s*['"]?nofollow['"]?/i', $match[0])) continue;
if ($match[2]==$link_url) return true; // Ура!
}
return false;
}
if (contains_link('http://htmlweb.ru/','http://VseTaksi.ru/')) echo 'Ссылка найдена!';
else echo 'Ссылка не найдена!';
Также полезно проверить, не закрыта ли эта ссылка тегами <noindex>, нет ли её в Robots.txt, и есть ли до неё путь с главной страницы.
.
Прокомментировать/Отблагодарить