2017-02-21 8 views
1

DOMを使用して大きなHTMLファイルを処理しようとしています。私はそれを読んですぐに別のファイルに変更を加えずに書き出しますが、出力ファイルは入力よりもずっと小さくなります。PHP XML DOM:大きなHTMLファイルが切り詰められるのはなぜですか?

DOMを使用することを習得している間に私がこれまでしてきたことを誓うことができたので、これは特に困惑しています。ここで

は私のコードです:

<? 
    // ini_set("memory_limit", -1); 
    require_once("inc/common.inc"); 

    $acad = "../inprogress/academy/"; 
    $htmFName = "$acad/mf/humanacad.htm"; 
    $sz = filesize($htmFName); 
    echo "fname: $htmFName, $sz bytes\n"; 

    $dom = new DOMDocument(); 
    $dom->loadHTML($htmFName); 
    $dom->save("z"); 
    $sz = filesize("z"); 
    echo "fname: z: $sz bytes\n"; 

そして出力:

fname: ../inprogress/academy//mf/humanacad.htm, 2621622 bytes 
fname: z: 219 bytes 

ここでは、入力ファイルの先頭である:

<html> 
<head> 
<meta http-equiv=Content-Type content="text/html; charset=utf-8"> 
<meta name=Generator content="Microsoft Word 11 (filtered)"> 
<title> The Hanging Academy</title> 
<style> 
<!-- 
... 
--> 
</style> 
</head> 
<body lang=EN-US link=blue vlink=blue> 
<div class=Section1> 
<p class=SectionHd>THE HANGING ACADEMY -- Part 1: Miranda</p> 

そして、ここでは、全体で出力ファイル:

<?xml version="1.0" standalone="yes"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body><p>../inprogress/academy//mf/humanacad.htm</p></body></html> 

答えて

1

loadHTMLFile($filename)ではなくloadHTML($html)を使用していたと思います。 loadHTML($html)は渡された文字列がHTMLコンテンツであることを想定しています。コンテンツを取得する場所のファイル名ではありません。

+0

ありがとうございました。問題が修正されました。 –

関連する問題