2011-11-21 10 views
0

私の学校のHTML「グループ」ページを解析するPHPパーサーを開発中です。これらは、コースの名前といくつかの他の変数に基づいてユニークなURLを持つページです。このページは、HTML <table>の束で構成されています。PHP DOMドキュメントLoadHTMLFileはかっこで中断されました

URLから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); 
関連する問題