我正在尝试将dom对象保存到我的c:驱动器文件夹中......但是我该如何实现呢?我读了很多文件,但没有做到。请帮忙!
$html = new simple_html_dom();
$html->load_file($newurl);
foreach($html->find('img') as $img){
$path = "../folder/";
$file = file_get_html ($img->src);
$file->save($path); //1st method, fails
$img->save($path); //2nd alternative, fails too.
}
我知道最后一行是错的。但我无法弄清楚..
答案 0 :(得分:0)
您的示例中需要的功能是file_get_contents()。我认为file_get_html()
不是一个函数。
之后,您必须致电file_put_contents()或其好友write()
。
或者,假设您将src
地址设为正确,为什么不使用copy()?
copy ($img->src, $path)
或者至少,我如何将$ img转换为文件?
$img
是一个DOM节点,而不是一个文件。我很确定如果你保存它,它只会保存<img>
标签及其属性,而不是图像。
编辑
回复你的评论:
DOM就像一棵假想的树。树的每个分支都是一个节点。这些节点不是文件,它们只是子元素,如<div>
或其他东西。因此,当您在DOM文档上调用save()
时,它只会保存一个包含节点及其子节点的HTML字符串。
文件完全不同。它必须被打开,读取等。要执行这些操作,用户必须具有执行此操作的权限。 * nix系统上的777表示用户可以对该文件执行任何操作。
因此,您将从DOM 节点获取图像文件的src
(地址)并使用该文件的。您不再需要该节点,因为您只需要地址。然后,使用上述函数读取,写入,复制任何您想要执行的操作,到文件(而不是节点)。
基本上,节点只是一串HTML。文件是实际数据。所有DOM的东西只是在树周围移动并查看分支。这就是所谓的“解析”。