регулярка для ссылок

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

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

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    нужно чтобы регулярка заменяла такие ссылки

    HTML:
    <a href="/bezopasnost-pk/">Безопасность ПК</a>
    <a href="/razrabotchiki/">Разработчики</a>
    <a href="/opera-next/">Опера Next</a>
    <a href="/opera-dragonfly/">Opera Dragonfly</a>
    <a href="/zapis-diskov/">Запись дисков</a>
    <a href="/opera-software/">Opera Software</a>
    <a href="/utility-sistema/">Утилиты и система</a>
    <a href="/portable-soft/">Portable soft</a>
    на такие

    HTML:
    <a href="/урл-ссылки/">анкор ссылки</a>
    вот такая регулярка почему то ничего не меняет

    PHP:
    function z_cat ($links)

    {

    $links preg_replace ("/(<a[^>]+href=\")[^\"{}\[\]#tabln1#tabln2][-][a-zA-z0-9\/]{2,}?(\"[^>]*>).*?(<\/a>)/i""$1/урл_ссылки/$2название_ссылки$3"$links);

    return 
    $links;

    }
    ещё нужно чтобы главная не менялась то есть с одним слешем ссылка не должна меняться. Помогите пжалуста составить регулярку :thenks:
     
  2. efs

    efs SEO оптимизатор дискрипторов одностраничных сайтов

    Moderator
    Регистр.:
    20 ноя 2009
    Сообщения:
    825
    Симпатии:
    475
    ссылка
    Код:
    (?<==")/.*?/(?=")
    анкор
    Код:
    (?<=>).*?(?=<)
     
  3. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    что то у меня не получается, а как сделать чтоб менялись ссылки такие

    HTML:
    
    <a href="/video/"><span>Главная</span></a>
    <a href="/onlajn-radio/"><b>Онлайн радио</b></a>
    <a href="/onlajnpogoda/">Онлайн погода</a>
    
    на такие

    HTML:
    
    <a href="/урл_ссылки/"><span>название_ссылки</span></a>
    <a href="/урл_ссылки/"><b>название_ссылки</b></a>
    <a href="/урл_ссылки/">название_ссылки</a>
    
    и не менялись ссылки в которых есть символы #tabln1#tabln2[]{} и один слеш - /


    вот регулярка, но она не меняет ссылки в которые есть - и span, пробовал так прописывать но не работает (<b|span>)

    PHP:
    function z_cate ($links)

    {

      
    $links preg_replace ("/(<a[^>]+href=\")[^\"{}\[\]#tabln1#tabln2][a-zA-z0-9\/]{2,}?(\"[^>]*>)(<b>).*?(<\/b>)(<\/a>)/i""$1/урл_ссылки/$2$3название_ссылки$4$5"$links);
      
    $links preg_replace ("/(<a[^>]+href=\")[^\"{}\[\]#tabln1#tabln2][a-zA-z0-9\/]{2,}?(\"[^>]*>).*?(<\/a>)/i""$1/урл_ссылки/$2название_ссылки$3"$links);

      return 
    $links;

    }
     
  4. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    Самый простой вариант - берём ссылку - отдельно url, отдельно текст
    далее в тексте убираем все тэги, меняем текст на нужный и делаем замену в ссылке.
    PHP:
    $link '<a href="/old_url/"><span>old text</span></a>';
    $new_url '/url_new/';
    $new_text 'NEW TEXT';
    $link preg_replace('/href="([^"]+)"/''href="'.$new_url.'"'$link);
    preg_match('/<a[^>]+>(.+?)<\/a>/i'$link$text);

    $new_link str_replacestrip_tags($text[1]), $new_text$text[0] );
     
  5. TeamArea

    TeamArea Писатель

    Регистр.:
    10 янв 2014
    Сообщения:
    1
    Симпатии:
    0
    Код:
    preg_replace('~<a href="(.*?)">(.*?)</a>~is', '<a href="/урл-ссылки/">$2</a>', $link);
     
  6. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    95
    Симпатии:
    39
    Если кому пригодиться вот еще мой велосипед.

    PHP:
    $retval preg_match_all('#<a\s(?:[^\s>]*?\s)*?href="(.*?)"\s?(?:id="(.*?)")?\s(?:title="(.*?)")?.*?>(.+?)</a>#esi'$content$matches);
    достает ссылки вида

    <a href="http://narod.ru/blabla.html" id="a1" title="бла бла бла" >text text text</a>
     
Статус темы:
Закрыта.