gpt4 book ai didi

php - 解析 HTML 文件以获取 CSS 引用

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:34 25 4
gpt4 key购买 nike

我有一个脚本,它假设从定义的 url 或页面收集所有 css。我已经尝试了所有方法,但出于某种原因,它无法检测链接的样式表,例如

<link rel="stylesheet" href="css/typography.css" /> 

我已经尝试了所有我能想到的。这是我正在使用的代码,它在页面 css 和导入上收集。添加链接系统的任何帮助都会很棒。

function scan($page_content){
$i = 0;
if(ereg("<style( *[\n]*.*)>\n*(.\n*)*<\/style>", $page_content)){
if(preg_match_all("/(@\s*import\s* (url((\"|')?)?((\"|')?)|(\"|'){1}).+(\"|')?\)?)/", $page_content, $ext_stylesheets)){
foreach($ext_stylesheets[0] as $stylesheet){
$css_content[$i] = preg_replace("/(@\s*import\s*)|(url\(?((\"|')?))|(\"|'){1}|\)?(\"|')?;|(\s)/", "", $stylesheet);
$i++;
}
$array = 1;
}
$inline_notused = $this->check_file($page_content, $page_content);
}
else die("No page styles, sorry!".$this->helptext);
}

最佳答案

这是一个不错的 DOM/XPath 方式 ( demo ):

function scan($html) {
$dom = new DOMDocument;
$dom->loadHTML($html);
$path = new DOMXPath($dom);
$nodes = $path->query('//style|//link');
$style = '';
foreach($nodes as $node) {
if($node->tagName === 'style') {
$style .= $node->nodeValue;
} elseif($node->tagName === 'link') {
$style .= "@import url('{$node->getAttribute('href')}')";
} else {
// Invalid
}
$style .= PHP_EOL;
}
return $style;
}

关于php - 解析 HTML 文件以获取 CSS 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com