Найти ссылку где есть определенные слова

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

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

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    Необходимо написать регулярку с поиском ссылок где в ссылке встречаютя к примеру одно из слов: CAR, DOG или SMILE

    Написал регулярку, все работает на локальной машине (денвер), если же тестирую на севере то нечего неищет.

    Подскажите в чем может быть косяк?
    Код:
    if (preg_match('/href=["\']?([^"\'> ]*)["\']?.*?[>].*?(?:car|dog|smile).*?<\/a>/i',$file_str,$found))
     {
    
        $res = $found[1];
    }

    Есть ли разницы использовать ' или " ?
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    ссылки разные бывают и с href=" и href=' или вообще без ничего href=сссылка, может в этом проблема?

    Немного добавил:
    PHP:
    $file_str 'asd ad <a id="object1" class=\'haha\' href=http://carmen/test2>smile do</a>asd a da<a href = "http://carmen/test">carmen do утф</a>df sdf dsf dsfas a asa<a href=\'http://test\'>dogsdsdsd dog</a>';
    preg_match_all("/<a\s*.*?href\s*=\s*['\"]*([^\"'>]*).*?>.*?(?:car|dog|smile).*?<\/a>/iu",$file_str$found);
    print_r($found);
     
  3. Crazy108

    Crazy108 Создатель

    Регистр.:
    6 сен 2008
    Сообщения:
    45
    Симпатии:
    7
    ну тут все на много хуже, поскольку может быть еще миллион вариантов типа href = ' и т .д.
    Тоесть вараинт наличия пробелов тоже нельзя исключать

    я бы порекомендомал ТС разделить это все на 2 части
    1) ищет просто ссылки, где регулярка предусматривает все варианты извращений вебмастеров
    2) по найденным ссылкам ищем то что нужно

    ПС: кода больше, читать править и отглючавать проще. мой имХО!
     
  4. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Почти любую(без < и > в значениях атрибутов) ссылку возьмет регулярка:
    Код:
    {<a\s [^<>]*? \shref\s*=\s*(?:
      "[^"]*+"|
      '[^']*+'|
      [^'"<>]++
    )[^<>]*?>.*?\b(?:car|dog|smile)\b.*?</a\s*>}xsi
    
     
  5. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Извиняюсь, что влезаю в чужой топик, но возникла схожая задача.
    Есть тэг img:
    PHP:
    <img tut_vse_chto_ugodno src="http://site.ru/superfolder/mnogosimvolov" tut_opyat_vse_chto_ugodno />
    Нужно выдрать url картинки из src,
    При этом Перейти по ссылке может быть произвольным
    mnogosimvolov тоже может быть произвольным
    Единственное, что общее у всех тэгов подлежащих обработке, то, что картинки находяться в папке superfolder
    Может, кто-то подскажет решение?:thenks:
     
  6. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Примерно так:
    Код:
    <img\s[^>]*?\bsrc\s*=\s*"(http://[^/"]+/superfolder/[^"]+)"[^>]*>
    
     
    dig555 нравится это.
  7. vitcom

    vitcom Писатель

    Регистр.:
    6 мар 2008
    Сообщения:
    7
    Симпатии:
    0
    .*? - а это как?
    .* - будет вполне достаточно


    <[^>]+src|href=\"(http:\/\/[^\\"]+(dog|cat|some text)+[^\\"]+\"[^>]*>

    вот такой кусочек мне кажется должен вам помочь
     
  8. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    vitcom
    Учи матчасть. *? - не "жадный" квантификатор.
     
Статус темы:
Закрыта.