PHP正则表达式在多个引号中完全匹配

时间:2015-04-17 00:02:37

标签: php regex

我有这个字符串(或类似的):

<img data-src="useJS: 'true', useZoom: '#zoom1', image_big: '//cdn.example.com/big.jpg', image_orig: '//cdn.example.com/orig.gif', image_icon: '//thisDomain.com/images/icon.png'" />
...

我在preg_match_all中使用这个正则表达式:

preg_match_all('/:\s?(\'[^"]+(.jpe?g|.gif|.png)\')/siU', $string, $match);

匹配是:

[1][0] => : ', useZoom: '#zoom1', image_big: '//cdn.example.com/big.jpg'
[1][1] => : '//cdn.example.com/big.jpg'
...

我只喜欢第二场比赛而且在正则表达式中没有逗号。我不喜欢第一场比赛,我只需要图像uri。

1 个答案:

答案 0 :(得分:0)

使用此:

preg_match_all('/\'[^\']+\.(?:jpe?g|gif|png)\'/', $string, $match);

我将[^"]+更改为[^\']+,这样就可以匹配以其中一个扩展名结尾的单引号之间的字符串。此外,您需要在扩展名之前转义.,以便按字面匹配。

DEMO