Like Michael pointed out,您不想为此目的使用正则表达式.正则表达式不知道元素标记是什么. < FOO>和> foo
$html = <<< HTML
HTML;
以上是我们的(无效)标记.我们将它提供给DOM,如下所示:
$dom = new DOMDocument();
$dom->loadHtml($html);
$dom->normalizeDocument();
现在我们查询DOM,查找包含“style”属性的所有“IMG”元素,该属性包含文本“display”.我们可以在XPath中查询“display:none”,但我们的输入标记出现时间间隔没有空格:
$xpath = new DOMXPath($dom);
foreach($xpath->query('//img[contains(@style, "display")]') as $node) {
$style = str_replace(' ', '', $node->getAttribute('style'));
if(strpos($style, 'display:none') !== FALSE) {
$node->parentNode->removeChild($node);
}
}
我们遍历IMG节点并从其样式属性内容中删除所有空格.然后我们检查它是否包含“display:none”,如果是,则从DOM中删除该元素.
现在我们只需要保存我们的HTML:
echo $dom->saveHTML();
给我们:
螺丝正则表达!