使用http://simplehtmldom.sourceforge.net/manual.htm,是否可以提取HTML文件的内联CSS?
这个解析器如果纯html,假设(如果我错了就纠正我)它无法解析CSS标签。还有其他方法可以在html文件中提取内联CSS吗?
答案 0 :(得分:3)
如果你真的需要使用simplehtmldom来提取它:
对于
<style>
...
</style>
使用:
$css = $html->find('style')->innertext;
对于
<div style="background:blue; color:white;"></div>
使用:
$css = $html->find('div[style]')->style;
如果有多个div
个style
属性或多个<style>
,您可以使用foreach
在它们之间循环。
解析样式:
PHP中的:
$s = 'background:blue; color:white;';
$results = [];
$styles = explode(';', $s);
foreach ($styles as $style) {
$properties = explode(':', $style);
if (2 === count($properties)) {
$results[trim($properties[0])] = trim($properties[1]);
}
}
var_dump($results);
JS中的
let s = 'background:blue; color:white;';
let results = {};
let styles = s.split(";");
for (let style in styles) {
let properties = styles[style].split(":");
if (properties.length === 2) {
results[properties[0].trim()] = properties[1].trim();
}
}
console.log(results);
答案 1 :(得分:1)
这应该有效:
$doc = new DOMDocument();
$doc->loadHTML('<html><body style="color: red"></body></html>');
$els = $doc->getElementsByTagName('*');
for($i = 0; $i < $els->length; $i++)
echo $els->item($i)->getAttribute('style'); // color: red
答案 2 :(得分:1)
使用普通的HTML解析器:
style
,请获取元素的内容style
,请获取该属性的值。答案 3 :(得分:0)
find('css','div[style*="display:block;"] ')
通过这种方式,您可以找到属性为display:block
的样式。根据需要修改它,你可以获得内联CSS。