保存DOM对象图像

时间:2013-07-10 05:27:59

标签: php dom simple-html-dom

我正在尝试将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.

}

我知道最后一行是错的。但我无法弄清楚..

1 个答案:

答案 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的东西只是在树周围移动并查看分支。这就是所谓的“解析”。