问问题
65 次
1 回答
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);
于 2013-05-16T07:22:16.837 回答