0
4

1 回答 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 回答