Замена простых ссылок на ссылки в noindex и nofollow

Тема в разделе "Регулярные выражения", создана пользователем BuzzDD, 18 дек 2009.

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

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    Как можно переделать ссылки вида
    HTML:
    <a href="http://URL.ru" title="Описание">Что-то тут</a>
    на
    HTML:
    <noindex><a href="http://URL.ru" title="Описание" rel="nofollow">Что-то тут</a></noindex>
    Текст выводится из БД, поэтому нужно учитывать возможные переносы, теги и остальное. Сам я слабо соображаю в RegExp, поэтому прошу помочь. Ещё нечто подобное можно сделать с parse_url, кажись:nezn:
     
  2. Ewsen

    Ewsen

    Регистр.:
    26 июл 2008
    Сообщения:
    163
    Симпатии:
    59
    RegExp для этого
    <a(.*?href=\"?'?([^\s\"'>]+)\"?'?.*?>(.*?))</a> заменить на <noindex><a$1</a></noindex>
     
  3. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    А можно полный код? Это делается с помощью preg_replace ?
    Но так не работает:
    PHP:
    $text "Текст <a href=\"link.php\" title=\"описание\">АНКОР</a> ура";

    $pattern "/<a(.*?href=\"?'?([^\s\"'>]+)\"?'?.*?>(.*?))</a>/";
    $replace "/<noindex><a$1</a></noindex>/";

    echo 
    preg_replace($pattern,$replace,$text);
    Пишет
     
  4. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    Так никто и не поможет?:(
     
  5. snapik

    snapik Постоялец

    Регистр.:
    6 дек 2007
    Сообщения:
    124
    Симпатии:
    33
    Присоединяюсь к вопросу. Интересует также чтобы был параметр rel="nofollow" после href.
     
  6. Ponochka

    Ponochka Постоялец

    Регистр.:
    21 фев 2008
    Сообщения:
    128
    Симпатии:
    13
    Код:
    $data=preg_replace('#<a([^>]+?)href\s*=\s*(["\']*)\s*http://([^"\'\s>]+)\s*\\2([^>]*?)>(.*?)</a>#is', 
    '<noindex><a$1href=$2http://$3$2$4 rel="nofollow">$5</a></noindex>', $data);
    
     
    BuzzDD нравится это.
  7. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    А как можно найти ссылки в тексте и заменить только определённые ссылки на URL: go/sitename.net/

    Допустим, есть сайт Перейти по ссылке и на нём есть статьи в которых есть ссылки на этот же сайт и на другие ресурсы. Как изменить ссылки, которые ведут только на другие сайты? Т.е. изменить только внешние ссылки
     
Статус темы:
Закрыта.