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

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

dazed

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

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

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

    $res = $found[1];
}


Есть ли разницы использовать ' или " ?
 
ссылки разные бывают и с 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);
 
ну тут все на много хуже, поскольку может быть еще миллион вариантов типа href = ' и т .д.
Тоесть вараинт наличия пробелов тоже нельзя исключать

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

ПС: кода больше, читать править и отглючавать проще. мой имХО!
 
Почти любую(без < и > в значениях атрибутов) ссылку возьмет регулярка:
Код:
{<a\s [^<>]*? \shref\s*=\s*(?:
  "[^"]*+"|
  '[^']*+'|
  [^'"<>]++
)[^<>]*?>.*?\b(?:car|dog|smile)\b.*?</a\s*>}xsi
 
Извиняюсь, что влезаю в чужой топик, но возникла схожая задача.
Есть тэг img:
PHP:
<img tut_vse_chto_ugodno src="http://site.ru/superfolder/mnogosimvolov" tut_opyat_vse_chto_ugodno />
Нужно выдрать url картинки из src,
При этом Для просмотра ссылки Войди или Зарегистрируйся может быть произвольным
mnogosimvolov тоже может быть произвольным
Единственное, что общее у всех тэгов подлежащих обработке, то, что картинки находяться в папке superfolder
Может, кто-то подскажет решение?:thenks:
 
Примерно так:
Код:
<img\s[^>]*?\bsrc\s*=\s*"(http://[^/"]+/superfolder/[^"]+)"[^>]*>
 
.*? - а это как?
.* - будет вполне достаточно


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

вот такой кусочек мне кажется должен вам помочь
 
vitcom
Учи матчасть. *? - не "жадный" квантификатор.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху