Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Проверка наличия ссылки на странице
Как проверить, содержит ли страница ссылку?
Иногда необходимо убедиться в том, что на конкретной странице действительно есть конкретная ссылка.
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, и есть ли до неё путь с главной страницы.
.
Прокомментировать/Отблагодарить