2017-02-21 95 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

谢谢,解决了这个问题。 –