2016-12-28 5 views
0

Я в тупике, почему труба не работает.Почему труба не работает?

/(?:<img.*?src=[\'"](.*?)[\'"].*?>)|(http(?:[^\s]*)\.(?:jpg|jpeg|gif|png))/ 

Вот полный Pastebin коды: http://pastebin.com/J2y8jbsg

Например, ссылка, такие как:

http://guardianlv.com/wp-content/uploads/2014/03/Robots-The-Possibilities-of-Artificial-Intelligence.jpg 

будет захвачен, если второй шаблон регулярного выражения в одиночку. (http(?:[^\s]*)\.(?:jpg|jpeg|gif|png))

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

Array ([0] => [1] =>) 

Может кто-нибудь объяснить это? А также решение было бы полезно :) Спасибо.

+0

О, черт глупо меня лол. Пожалуйста, дайте ответ, и вы получите его. Большое спасибо. Спокойной ночи. – KrNel

ответ

1

В вашей первой части:

<img.*?src=[\'"](.*?)[\'"].*?> 
       ^ 

это первая группа захвата. Таким образом:

(http(?:[^\s]*)\.(?:jpg|jpeg|gif|png) 

- ваша вторая группа захвата. Таким образом:

foreach ($matches[1] as $url) { 

является неправильным. Вы можете использовать:

foreach ($matches[2] as $url) { 

или

foreach ($matches[0] as $url) { 

для полного матча.

Демо: https://eval.in/705305

Regex101 демо: https://regex101.com/r/KXjmo3/1

+0

Спасибо. Я не знаю, был ли это ты первым, кто прокомментировал это. Еще раз спасибо. Ошибочная ошибка с моей стороны. – KrNel

+0

@KrNel да, я прокомментировал, затем удалил. Предоставлял функциональные примеры, чтобы вы могли видеть актуальную проблему. – chris85

 Смежные вопросы

  • Нет связанных вопросов^_^