首先从URL获取文件,但随后不在脚本上运行

时间:2019-03-14 20:44:31

标签: php html dom file-get-contents

我遇到了一个愚蠢的问题,我试图制作一个脚本来复制网站中链接的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'];

    }

0 个答案:

没有答案