preg_match_all 多个模式留下空数组值
preg_match_all multiple pattern leaves empty array values
我试图通过其中的多个模式来理解 preg_match_all
,因此我创建了 html 字符串变量和模式。
修剪等一切工作正常,但由于多重模式,它输出一些具有空值的数组键。如果您知道为什么会这样,请告诉我并告诉我必须如何修复它。
我的代码:
<?php
$cource = "<div><a href='test1'> <img src=\"test2\" /> <img src='test3' > <script src='test4'> <link href='test5'> </div>";
preg_match_all('/src=["\']([^"\']+)|href=\'([^\']+)/',$cource, $result);
var_dump($result);
?>
输出:
由于使用了两个捕获组,您得到的是空值,
- 第一个是
src
- 第二个是
href
因此,根据您的数据,您得到的是空值,因为第一个元素具有属性 href
,您得到 src
空白(因为它没有)等等。
您可以在一个捕获(第二)组中获取结果,第一个留作参考,用于获取它的属性。
$cource = "<div><a href='test1'> <img src=\"test2\" /> <img src='test3' > <script src='test4'> <link href='test5'> </div>";
preg_match_all('/(href|src)=["\']([^"\']+)/',$cource, $result);
如果不需要引用属性,可以使用非捕获组?:
preg_match_all('/(?:href|src)=["\']([^"\']+)/',$cource, $result);
我试图通过其中的多个模式来理解 preg_match_all
,因此我创建了 html 字符串变量和模式。
修剪等一切工作正常,但由于多重模式,它输出一些具有空值的数组键。如果您知道为什么会这样,请告诉我并告诉我必须如何修复它。
我的代码:
<?php
$cource = "<div><a href='test1'> <img src=\"test2\" /> <img src='test3' > <script src='test4'> <link href='test5'> </div>";
preg_match_all('/src=["\']([^"\']+)|href=\'([^\']+)/',$cource, $result);
var_dump($result);
?>
输出:
由于使用了两个捕获组,您得到的是空值,
- 第一个是
src
- 第二个是
href
因此,根据您的数据,您得到的是空值,因为第一个元素具有属性 href
,您得到 src
空白(因为它没有)等等。
您可以在一个捕获(第二)组中获取结果,第一个留作参考,用于获取它的属性。
$cource = "<div><a href='test1'> <img src=\"test2\" /> <img src='test3' > <script src='test4'> <link href='test5'> </div>";
preg_match_all('/(href|src)=["\']([^"\']+)/',$cource, $result);
如果不需要引用属性,可以使用非捕获组?:
preg_match_all('/(?:href|src)=["\']([^"\']+)/',$cource, $result);