这是我的字符串($string
):
swatch: 'http://abc.com/aa.jpg',
zoom:[
'http://abc.com/bb.jpg'
],
large:[
'http://abc.com/cc.jpg'
],
我在PHP文件中使用以下模式,并希望匹配http://abc.com/bb.jpg
:
preg_match_all('/(?<=zoom:\[\s{15}\').*(?=\')/', $string, $image);
但没有任何回报。我该怎么办?
答案 0 :(得分:1)
为了简单起见,我们不会使用环顾四周,虽然我说我们需要s
修饰符,但我错了它只用于匹配我们赢得的点.
的新行我在这里使用,所以\s
匹配一个新行:
$string = <<<JSO
swatch: 'http://abc.com/aa.jpg',
zoom:[
'http://abc.com/bb.jpg'
],
large:[
'http://abc.com/cc.jpg'
],
JSO;
preg_match_all('/zoom:\[\s*\'(?<img>[^\']*)\'\s*\]/', $string, $m);
print_r($m['img']);
<强>输出:强>
Array
(
[0] => http://abc.com/bb.jpg
)
<强>解释强>
/ # Starting delimiter
zoom:\[ # Matches zoom:[
\s* # Matches spaces, newlines, tabs 0 or more times
\' # Matches '
(?<img>[^\']*) # named group, matches everything until ' found
\' # Matches '
\s* # Matches spaces, newlines, tabs 0 or more times
\] # Matches ]
/ # Ending delimiter