Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用regexp preg_match()函数获取所有匹配_Php_Regex_Preg Match - Fatal编程技术网

在PHP中使用regexp preg_match()函数获取所有匹配

在PHP中使用regexp preg_match()函数获取所有匹配,php,regex,preg-match,Php,Regex,Preg Match,我使用它在具有特定src或href模式的xml中搜索img元素。示例:“ '2837' ) 如何获取$matches数组中的所有匹配项 我已经实现了这一点,但想了解正则表达式是如何使用的。使用而不是。使用而不是。您需要将[“|”]转换为(?:“|”)。此['|“]将匹配'或或“。此外,您还需要使用preg\u match\u all进行全局匹配 preg_match_all('/< *\/? *' . 'img' . '[^>]*' . '(?:src|href)

我使用它在具有特定src或href模式的xml中搜索img元素。示例:

preg\u match('/<*\/?*'//xml元素的开头
“img”/“img”阿曲布他
.[^>]*'//除>
.(?:src | href)*=*'//src或href属性之间可能有空格=
.(?:“|\”)级别1\/级别2\/(\d+)(“|\”)/”,/“级别1/级别2/2837”
$subject,$matches);
它可以工作,但只返回第一个匹配项

例如,如果主题包含以下内容:

$subject=“某物

我得到的结果是:

$matches=>数组
( 
[0]=>“ '2837' 
) 
如何获取
$matches
数组中的所有匹配项

我已经实现了这一点,但想了解正则表达式是如何使用的。

使用而不是。

使用而不是。

您需要将
[“|”]
转换为
(?:“|”)
。此
['|“]
将匹配
'
。此外,您还需要使用
preg\u match\u all
进行全局匹配

preg_match_all('/< *\/? *'
  . 'img'
  . '[^>]*'
  . '(?:src|href) *= *'
  . '(?:"|\')level1\/level2\/(\d+)(?:"|\')/', 
  $subject, $matches);
preg\u match\u all('/<*\/?*'
“img”
. '[^>]*'
.(?:src | href)*=*'
.(?:“|\')级别1\/级别2\/(\d+)(“|\')/”,
$subject,$matches);
您需要将
[“|”]
转换为
(?:“|”)
。此
['|“]
将匹配
'
。此外,您还需要使用
preg\u match\u all
进行全局匹配

preg_match_all('/< *\/? *'
  . 'img'
  . '[^>]*'
  . '(?:src|href) *= *'
  . '(?:"|\')level1\/level2\/(\d+)(?:"|\')/', 
  $subject, $matches);
preg\u match\u all('/<*\/?*'
“img”
. '[^>]*'
.(?:src | href)*=*'
.(?:“|\')级别1\/级别2\/(\d+)(“|\')/”,
$subject,$matches);

@AvinashRaj ok。。你说得对,这将匹配一个字符,谢谢。我正在更新it@AvinashRaj好啊你说得对,这将匹配一个字符,谢谢。我正在更新它