我遇到了一个愚蠢的问题,我试图制作一个脚本来复制网站中链接的CSS样式表。
一切正常,但是当尝试使用根路径(例如/cached.php?t=1540425603&f=/styles/theme-base.css
)提取css文件时,在脚本开始时,我有一个echo命令来测试链接是否可以正常工作
echo file_get_contents('http://php.net/cached.php?t=1539765004&f=/styles/theme-base.css');
并且它正确地响应了css文件,在脚本的后面BUUT试图做同样的事情,它只是返回php.net
的HTML而不是css,就像在脚本开始时那样。
format_url() function
之后的样式表链接显示正确的CSS(如果将其粘贴到浏览器中)。
https://php.net/cached.php?t=1540425603&f=/styles/theme-base.css
因此,在使用SimpleHTMLDom加载DOM之后,我遍历link
元素,使用format_url()
从相对于绝对格式设置URL,然后使用{将来自href的数据保存到服务器上的文件中{1}}
save_file()
将返回文件的基本名称,因此可以将html文件中的href更改为该名称。
这真让我感到困惑,看到URL在foreach($html->find('link') as $element) {
$name = save_file(format_url($element->href, $og_url), $fol);
$element->href = $name;
}
之前被回显,并且给出的链接在浏览器中和脚本开始处都可以正常运行,但在这里不行。
file_get_contents()
format_url函数设置各种URL的格式,但是样式表是从根文件夹开始的类型。
function save_file($url, $fol) {
echo $url.'<br>';
$file = file_get_contents($url);
$name = pathinfo($url);
$fp = $fol.'/'.$name['basename'];
file_put_contents($fp, $file);
return $name['basename'];
}