Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверить ссылки на noffolow & noindex
 
 автор: cernos   (19.05.2008 в 18:41)   письмо автору
 
 

Вообщем есть масса сайтов участвующих в ссылко обмене.
Есть необходимость проверять сайты, не поставили ли они ссылки в теги noindex и ен поставили ли они атрибут ссылки rel="nofollow"

помогите с регуляркой и скриптом.

   
 
 автор: cheops   (19.05.2008 в 20:32)   письмо автору
 
   для: cernos   (19.05.2008 в 18:41)
 

Приведите пример как выглядит ссылка - адрес ссылки всегда известен?

   
 
 автор: cernos   (19.05.2008 в 23:53)   письмо автору
 
   для: cheops   (19.05.2008 в 20:32)
 

Адрес ссылки известен всегда, есть скажем сайт ***.ru
на его странице index.html должна находится ссылка на сайт 45**.ru вида <a href="http://45**.ru/forum/" title="45**.ru - юмор и развлечения">юмор и развлечения</a>


Вот необходимо скриптом проверить не находится ли ссылка:
<a href="http://45**.ru/forum/" title="45**.ru - юмор и развлечения">юмор и развлечения</a>

В тегах noindex и не присвоен ли её параметр rel=nofollow"

Т.е. ссылка на должна находится на странице ввиде:
<noindex> TEXT TEXT<a href="http://45**.ru/forum/" title="45**.ru - юмор и развлечения">юмор и развлечения</a> TEXT TEXT</noindex>


И не должна иметь параметр rel="nofollow", т.е.
TEXT TEXT<a rel="nofollow" href="http://45**.ru/forum/" title="45**.ru - юмор и развлечения">юмор и развлечения</a> TEXT TEXT

   
 
 автор: cheops   (20.05.2008 в 10:57)   письмо автору
 
   для: cernos   (19.05.2008 в 23:53)
 

Первую задачу можно решить следующим образом
<?php
  $str 
'Т.е. ссылка на должна находится на странице ввиде: 
<noindex> TEXT TEXT<a href="http://45.ru/forum/" title="45**.ru 
- юмор и развлечения">юмор и развлечения</a> TEXT TEXT</noindex>'
;
  
$url "http://45.ru/forum/";
  
$pattern "|<noindex>.+?<a[\s]+href=\"".preg_quote($url)."\"[^>]+>.+?</a>.+?</noindex>|is";
  if(
preg_match($pattern$str$out))
  {
    exit(
"Внимание: Обнаружена искомая ссылка, запрещённая к индексированию");
  }
?>

   
 
 автор: cheops   (20.05.2008 в 11:03)   письмо автору
 
   для: cernos   (19.05.2008 в 23:53)
 

Во втором случае можно отталкиваться от следующего скрипта
<?php
  $str 
'И не должна иметь параметр rel="nofollow", т.е. 
TEXT TEXT<a rel="nofollow" href="http://45.ru/forum/" 
title="45**.ru - юмор и развлечения">юмор и развлечения</a> TEXT TEXT'
;
  
$url "http://45.ru/forum/";
  
$pattern "|<a[^>]+href=\"".preg_quote($url)."\"[^>]+>.+?</a>|is";
  if(
preg_match($pattern$str$out))
  {
    
// Проверяем нет ли атрибута nofollow
    
if(strpos($out[0], "nofollow") !== false)
      exit(
"Внимание: Обнаружена искомая ссылка, запрещённая к индексированию");
  }
?>

   
 
 автор: cernos   (20.05.2008 в 16:55)   письмо автору
 
   для: cheops   (20.05.2008 в 11:03)
 

Большое спасибо Хеопс!

Объединил два кода в единое, может кому сразу пригодится готовое решение:
<?php

  
//Искомый URL страницы
  
$url "http://45.ru/forum/";  

  
//Текст в котором мы ищем ссылку
  
$str 'Т.е. ссылка на должна находится на странице ввиде:<noindex> TEXT TEXT<a href="http://45.ru/forum/" title="45.ru - юмор и развлечения" rel="nofollow">юмор и развлечения</a> TEXT TEXT</noindex>';
  
  
$noindex_pattern "|<noindex>.+?<a[\s]+href=\"".preg_quote($url)."\"[^>]+>.+?</a>.+?</noindex>|is";
  
$nofollow_pattern "|<a[^>]+href=\"".preg_quote($url)."\"[^>]+>.+?</a>|is";
  
  
//Проверка на закл. в тегах noindex
  
if(preg_match($noindex_pattern$str$out))
  {
    
$error .= "Недопустимая ссылка: ссылка находится в тегах noindex.\n";
  }  
  
  
//Проверка на атрибут nofollow
  
if(preg_match($nofollow_pattern$str$out))
  {
    
// Проверяем нет ли атрибута nofollow
    
if(strpos($out[0], "nofollow") !== false)
      
$error .= "Недопустимая ссылка: ссылка имеет параметр rel=nofollow.\n";
  } 
  
  
//Если существует ошибка, выводим её
  
if($error) exit("<pre>".$error."</pre>");
  
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования