AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Проверка наличия ссылки на странице

Как проверить, содержит ли страница ссылку?

Иногда необходимо убедиться в том, что на конкретной странице действительно есть конкретная ссылка.

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, и есть ли до неё путь с главной страницы.


.

© Copyright 2008-2017 by KDG