正则表达式如何查找只有一个a
标记的所有img
代码。
这显示了一个例子:
<a href="somelink"><img src="somelink" border="0"/></a>
如果img
代码与a
代码之间出现换行符,也应匹配。
感谢您的帮助
答案 0 :(得分:2)
关于如何使用正则表达式解析HTML不是100%可靠的通常免责声明适用。但如果你坚持使用正则表达式,你可以这样做:
preg_match_all(
'%<a\b[^<>]*> # Match an opening <a> tag
(?:(?!<img\b).)* # Match any characters except <img> tags
<img\b[^<>]*> # Match one <img> tag
(?:(?!<img\b).)* # Match any characters except <img> tags
</a> # Match a closing <a> tag%sx',
$subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
如果您打算只允许一个img
标记(以及可选的空格),那么它会更容易一些:
preg_match_all(
'%<a\b[^<>]*> # Match an opening <a> tag
\s* # Match optional whitespace
<img\b[^<>]*> # Match one <img> tag
\s* # Match optional whitespace
</a> # Match a closing <a> tag%sx',
$subject, $result, PREG_PATTERN_ORDER);