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 に答える