Проверка на noidex

Тема в разделе "PHP", создана пользователем dig555, 16 окт 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dig555

    dig555

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

    Есть строка $str
    В ней есть ссылка $link
    Помогите узнать находиться ли ссылка внутри тэгов <noindex></noindex> ?
    Наверное регулярное выражение нужно?
     
  2. sw04

    sw04 seoplayer

    Регистр.:
    1 дек 2007
    Сообщения:
    601
    Симпатии:
    193
    Можно без регулярок(геморройно ;))
    узнаем позицию вхождения <noindex>, </noindex> и ссылки. если позиция <noindex> < ссылки < </noindex> то ссылка не индексируется.
     
    dig555 нравится это.
  3. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    363
    Симпатии:
    148
    Нашёл решение на софттайме:

    Проверка на 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(
    "Внимание: Обнаружена искомая ссылка, запрещённая к индексированию"); 
      } 
    ?>
     
  4. Improvis

    Improvis Создатель

    Регистр.:
    15 май 2008
    Сообщения:
    22
    Симпатии:
    2
    Народ, а кто-нибудь использует эти скрипты для пакетной обработки? Чтобы из одного файла брал урлы, а в другой записовал их с комментарием "Плохо no" или "Хорошо"
     
  5. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Код:
    <?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>
     
  6. deadbeef

    deadbeef Прохожие

    почему обломается, если не секрет?
     
  7. lemo

    lemo Постоялец

    Регистр.:
    13 сен 2006
    Сообщения:
    61
    Симпатии:
    4
    С noindex всё запущено. Если для rel="nofollow" существуют правила установки и запрета, то с noindeх можно закрыть всё нужно и не нужно.
    Как то сложно представить что проверка даст 100% правильный результат.
     
  8. semakos

    semakos Постоялец

    Регистр.:
    26 окт 2008
    Сообщения:
    63
    Симпатии:
    14
    Вот же самый правильный ответ:

    На баше писали про регулярк: http://bash.org.ru/quote/401148
     
  9. RolCom

    RolCom

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