2016-12-28 6 views
0

パイプが機能しない理由について私は困惑しています。ここパイプが機能しないのはなぜですか?

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

コードの完全なペーストビンである:例えば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))

しかし、私は他とそれを追加するとき、最初に、上記とペーストビンに示すように、パイプとして、私が得るすべては空の配列である:

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

誰かがこれを説明することはできますか?また、解決策が役立つだろう:)ありがとう。あなたの最初の部分で

+0

ああ、笑私いまいましい愚かな。答えを提示してください。どうもありがとうございました。良い夜を。 – KrNel

答えて

1

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

これは最初のキャプチャグループです。したがって:

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

は、2番目のキャプチャグループです。したがって:

​​

が間違っています。あなたは使用することができます。

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 yea、私はコメントしてから削除しました。実際の問題を見ることができるように機能的な例を提供していました。 – chris85

関連する問題