用于捕获所有img ID的PHP中的regexpr


regexpr in PHP for capture all img ID

我在创建regexpr以捕获标记imgs中的所有ID时遇到问题。我有一个代码:

#<span><img (id='"([^"]*)'").*><'/span>#

示例:

https://regex101.com/r/aN0uO0/3

仅捕获来自第一标签IMG的ID。谢谢

这是因为您没有搜索globally,以便在右侧文本字段(右侧/标记之后)输入g

如果您在php中使用preg_match,请使用preg_match_all,它就会起作用。

如果您渴望使用正则表达式,您可以使用:

<img[^>]*?id=(['"])(.+?)'1

您将在第二组($2)中找到id。但是,如果属性中的某个位置有>(在HTML中完全有效),则regex将无法按预期工作。在PHP代码中,这将是:

$regex = '~<img[^>]*?id=([''"])(.+?)'1~';
$string = 'your_string_here';
preg_match_all($regex, $string, $matches, PREG_SET_ORDER);

请参阅regex101.com上的示例。
提示:使用解析器几乎总是更好的,例如SimpleXMLDomDocument