2016-12-28 98 views
0

我難以理解爲什麼管道無法正常工作。爲什麼管道不工作?

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

這裏是代碼的完整引擎收錄:

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

如果第二正則表達式模式單獨是將被捕獲:http://pastebin.com/J2y8jbsg

例如諸如鏈接。 (http(?:[^\s]*)\.(?:jpg|jpeg|gif|png))

但是,當我與其他添加它,如最初上面和引擎收錄,作爲一個管道,我得到的是一個空數組:

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

有人能解釋一下嗎?而且一個解決方案將是有益的:)謝謝。

+0

哦,該死的愚蠢的我笑。請提供答案,然後獲得答案。非常感謝你。祝你晚安。 – KrNel

回答

1

在你第一部分:

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

這是第一個捕獲組。所以:

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

是你的第二個捕獲組。所以:

​​

不正確。您可以使用:

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