从html中提取所有css样式(不包括条件注释中包含的样式)

时间:2011-10-19 13:20:16

标签: php html css

我需要一个正则表达式从html文档中提取所有样式表(<link>标签)。

目前我有preg_match_all('/<link([^>]*?)>/i',...,正则表达式提取样式表......没关系。

但是,我需要排除IEs条件标签<!--[if IE...]>bla bla<![endif]--> ...

中包含的样式

有关如何操作的提示吗?

1 个答案:

答案 0 :(得分:1)

Use DOM and XPath for that

$dom = new DOMDocument;
$dom->loadHTMLFile('http://example.com');
$xpath = new DOMXPath($dom);
$stylesheets = $xpath->query('/html/head/link[@rel="stylesheet"]');
foreach ($stylesheets as $stylesheet) {
    echo $dom->saveHtml($stylesheet);
}

这将只打印head元素中的样式表,不包括那些注释节点内的样式表。如果你需要进一步限制,例如通过media属性,那么只需将其作为另一个条件添加到Xpath查询中。

如果saveHTML不接受您的PHP版本中的节点,请参阅