我使用preg_match
在xml中搜索具有特定src或href模式的img元素。示例:< img src= "level1/level2/2837"
,< img href ='level1/level2/54322'
。
preg_match('/< *\/? *' // Begining of xml element
. 'img' // "img" atribute
. '[^>]*' // Any character except >
. '(?:src|href) *= *' // src or href attribute with possible spaces between =
. '(?:"|\')level1\/level2\/(\d+)(?:"|\')/', // "level1/level2/2837"
$subject, $matches);
它有效但只返回第一场比赛。
例如,如果主题有此内容:
$subject = "< img src= 'level1/level2/2837'/> <p>something</p> < img href ='level1/level2/54322'";
我得到的结果是:
$matches => Array
(
[0] => '< img src= "level1/level2/2837"'
[1] => '2837'
)
如何获取$matches
数组中的所有匹配项?
我已经使用simplexml_load_string
来实现这一目标,但我想了解正则表达式如何与preg_match
一起使用。
答案 0 :(得分:2)
答案 1 :(得分:2)
您需要将["|']
转为(?:"|')
。此['|"]
符合'
或|
或"
。此外,您还需要使用preg_match_all
按顺序进行全局匹配。
preg_match_all('/< *\/? *'
. 'img'
. '[^>]*'
. '(?:src|href) *= *'
. '(?:"|\')level1\/level2\/(\d+)(?:"|\')/',
$subject, $matches);