我正在尝试使用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>
答案 0 :(得分:1)
我认为这是因为你的意思是使用loadHTMLFile( $filename )
而不是loadHTML( $html )
。 loadHTML( $html )
期望传递的字符串是HTML内容。不是检索内容的文件名。