我有这个字符串(或类似的):
<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。
答案 0 :(得分:0)
使用此:
preg_match_all('/\'[^\']+\.(?:jpe?g|gif|png)\'/', $string, $match);
我将[^"]+
更改为[^\']+
,这样就可以匹配以其中一个扩展名结尾的单引号之间的字符串。此外,您需要在扩展名之前转义.
,以便按字面匹配。