PHP DOM Document LoadHTMLFile прерван круглыми скобками - PullRequest
0 голосов
/ 22 ноября 2011

Я работаю над синтаксическим анализатором PHP, который анализирует страницу «групп» HTML моей школы. Это страницы с уникальным URL-адресом, основанным на названии курса и нескольких других переменных. Страница состоит из множества HTML <table>.

Загрузка HTML из URL-адреса работает нормально, пока не встретится ) в содержимом файла. Тогда он просто перестает загружаться и сохраняет только то, что получил. Очевидно, что загруженный 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 голосов
/ 22 ноября 2011

Этот вопрос решил мою проблему: Удалите управляющие символы из строки php

Очевидно, в моем вводе 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);
...