PHP DOM文档LoadHTMLFile被括号中断

时间:2011-11-21 23:05:57

标签: php html parsing dom domdocument

我正在开发一个PHP解析器来解析我学校的HTML'组'页面。这些页面具有基于课程名称和其他几个变量的唯一URL。该页面由一堆HTML <table>组成。

从网址加载HTML工作正常,直到文件内容中出现)为止。然后它只是停止加载,只存储它到目前为止所得到的。显然,加载的HTML不是由我创建的,我无法阻止这些字符出现在HTML代码中。

然而,当我使用MAMP在本地运行它时工作正常。我试着寻找答案,但没有找到解决我问题的任何东西。

如何在加载前转义这些字符?

我目前的PHP:

$dom = new DOMDocument; 
libxml_use_internal_errors(true); // the HTML i parse contains a lot of unclosed tags, this to prevent the errors from displaying on the page
$dom->loadHTMLFile('http://isarog.hhs.nl/Web_Site/HHS/ICTM/Public/Iris_Roster/Timetables/11_2/11_2-CMD-4vt-p2.html');   

echo $dom->getElementsByTagName('html')->item(0)->nodeValue;

1 个答案:

答案 0 :(得分:0)

这个问题解决了我的问题:Remove control characters from php String

显然我的HTML输入中有一个不可见的字符导致加载功能停止读取。以下内容清除了所有内容:

$str = file_get_contents('http://isarog.hhs.nl/Web_Site/HHS/ICTM/Public/Iris_Roster/Timetables/11_2/11_2-CMD-4vt-p2.html');
$str = mb_convert_encoding($str, 'utf-8', mb_detect_encoding($str));

$str = preg_replace('/[\x00-\x1F\x7F]/', '', $str);
$str = ereg_replace("[[:cntrl:]]", "", $str);

$dom = new DOMDocument;
libxml_use_internal_errors(true); // Screw al die markup syntax errors dan ook
$dom->loadHTML($str);