2017-02-21 3 views
1

Я пытаюсь обрабатывать большой файл HTML с помощью DOM. Я прочитал его и сразу же напишу его в другой файл без внесения каких-либо изменений, но выходной файл намного меньше (и короче), чем вход.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

Спасибо, что исправил проблему. –