2

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

}

我知道最后一行是错误的。但是我想不通。。

4

1 回答 1

1

您在示例中需要的函数是file_get_contents()。我不认为file_get_html()是一个功能。

之后,您必须调用file_put_contents()或其伙伴write()

或者,假设您得到src正确的地址,为什么不使用copy()

copy ($img->src, $path)

或者至少,如何将 $img 转换为文件?

$img是一个 DOM 节点,而不是一个文件。我很确定如果你保存它,它只会保存一个<img>带有属性的标签,而不是图像。


编辑

要回复您的评论:

DOM 就像一棵虚构的树。树的每个分支都是一个节点。这些节点不是文件,它们只是子元素,比如<div>什么。因此,当您调用save()DOM 文档时,它只会保存一个包含节点及其子节点的 HTML 字符串。

文件是完全不同的东西。它必须被打开、读取等。要进行这些操作,用户必须有权限才能这样做。*nix 系统上的 777 意味着用户可以对该文件执行任何操作。

因此,您将从 DOM节点获取图像文件src的(地址)并使用该文件。您不再需要该节点,因为您想要的只是地址。然后,使用上面的函数读取、写入、复制,无论你想要做什么,到文件(不是节点)。

基本上,一个节点只是一个 HTML 字符串。文件是实际数据。所有 DOM 的东西都只是在树周围移动并查看分支。这就是所谓的“解析”。

于 2013-07-10T05:34:09.187 回答