我试图了解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);
?>
输出:
答案 0 :(得分:0)
由于使用两个捕获组,您将获得空值
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);