2012-03-24 4 views
1

Я хочу извлечь определенные ссылки с веб-сайта.PHP: Получить конкретные ссылки с preg_match_all()

Звенья выглядеть:

<a href="1494761,offer-mercedes-used.html"> 

Ссылки всегда одинаковы - кроме фирменного (мерседес в данном случае).

Это прекрасно работает до сих пор, но только поставляет первую часть ссылки:

preg_match_all('/((\d{7}),offer-)/s',$inhalt,$results);

И это обеспечивает первую связь со всем сайте :(

preg_match_all('/((\d{7}).*html)/s',$inhalt,$results);

Любой идеи?

Обратите внимание, что я использую preg_match_all(), а не preg_match().

Спасибо, Chama

ответ

1

Хотя .*? бы (= менее жадный), в обоих случаях вы должны указать более точную картину.

Здесь [\w.-]+ будет делать. Но [^">]+ также может быть осуществимым, если источник HTML согласован (или вы специально хотите игнорировать другие варианты).

preg_match_all('/((\d{7}),offer-[\w.-])/s',$inhalt,$results); 
1

Попытка разобрать XML/HTML с регулярным выражением, как правило, не является хорошей идеей, но если вы уверены, что он всегда будет отформатирован хорошо, это должно возвращать какие-либо ссылки в содержании.

/<a href="([^">]+)">/ 

Это будет более точно соответствовать только пример шаблона вы дали, но не уверен, что изменения вы могли бы иметь

/<a href="([0-9]{7},offer-[a-z]+-used\.html)">/ 
// [7 numbers],offer-[at least one letter]-used.html 
Смежные вопросы