2011-11-21 65 views
0

我正在研究解析我学校的HTML“组”页面的PHP解析器。这些页面具有基于课程名称和其他几个变量的唯一URL。该页面由一堆HTML <table>组成。PHP DOM文档LoadHTML文件被括号中断

从网址加载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

AFAIK括号在html中没有意义,你确定没有别的东西吗?如果你创建一个相同的页面但没有括号,并加载它,它是否工作? –

+0

我还没有尝试过,但是当我回应''标签的'nodeValue'时,它会显示所有内容,直到该括号开始发挥作用。 – Joey

+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);