Проверка на noidex

Статус
В этой теме нельзя размещать новые ответы.

dig555

Постоялец
Регистрация
22 Июн 2007
Сообщения
365
Реакции
160
Поиск по "noindex" в этом разделе ничего не дал. Поэтому спрошу здесь.

Есть строка $str
В ней есть ссылка $link
Помогите узнать находиться ли ссылка внутри тэгов <noindex></noindex> ?
Наверное регулярное выражение нужно?
 
Можно без регулярок(геморройно ;))
узнаем Для просмотра ссылки Войди или Зарегистрируйся <noindex>, </noindex> и ссылки. если позиция <noindex> < ссылки < </noindex> то ссылка не индексируется.
 
Нашёл решение на софттайме:

Проверка на noindex
PHP:
<?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("Внимание: Обнаружена искомая ссылка, запрещённая к индексированию"); 
  } 
?>
На nofollow:
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("Внимание: Обнаружена искомая ссылка, запрещённая к индексированию"); 
  } 
?>
 
Народ, а кто-нибудь использует эти скрипты для пакетной обработки? Чтобы из одного файла брал урлы, а в другой записовал их с комментарием "Плохо no" или "Хорошо"
 
Код:
<?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("Внимание: Обнаружена искомая ссылка, запрещённая к индексированию"); 
  } 
?>
Как много же г. регулярок в сети. Эта обломается на тексте вида:
<noindex>нечто</noindex>
<a href="нужный урл">бла-бла</a>
<noindex>нечто</noindex>
 
почему обломается, если не секрет?
 
С noindex всё запущено. Если для rel="nofollow" существуют правила установки и запрета, то с noindeх можно закрыть всё нужно и не нужно.
Как то сложно представить что проверка даст 100% правильный результат.
 
Вот же самый правильный ответ:

Можно без регулярок(геморройно ;))
узнаем Для просмотра ссылки Войди или Зарегистрируйся <noindex>, </noindex> и ссылки. если позиция <noindex> < ссылки < </noindex> то ссылка не индексируется.

На баше писали про регулярк:
 
Потому что .+? означает все-что-угодно, а приведенный текст удоволетворяет шаблону
<noindex> все_что_угодно ссылка все_что_угодно </noindex>
А надо бы <noindex> (все_кроме_</noindex>) ссылка
Я бы так составил регулярку по этому шаблону к примеру так:
Код:
<noindex\b(?>\s*\w+(\s*=\s*(?:"[^"]*"|'[^']*'|[^"'<>\s]+))?)*\s*>
(?:(?!</noindex).)*?
<a(?#поиск ссылки на ваше усмотрение)

Вот же самый правильный ответ:

На баше писали про регулярк: *** скрытое содержание ***
Ага, верно про кодеров которые регулярок не знают, и бегут за ними на форум. Тогда действительно две проблемы, где еще найти регулярку. Но это не про программистов.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху