我正在开发一个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;
答案 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);