2011-11-09 8 views
4

ウェブページのコンテンツをCURLまたはfile_get_contentsでキャプチャする場合、インラインjavascripコードを削除する最も簡単な方法は何ですか?私はタグの間のすべてを削除する正規表現を考えています。正規表現はこの目的のための信頼できる方法ではありません。ウェブページの解析時にJavaScriptコードを削除する

(JavaScriptコードを削除するだけで)HTMLページを解析するより良い方法はありますか?正規表現が依然として最良の選択肢であれば、最も信頼できるコマンドは何ですか?

答えて

2

DOMDocumentとそのremoveChild()の機能を利用できます。次のようなものがあなたを動かすはずです。

<?php 

$doc = new DOMDocument; 
$doc->load('index.html'); 

$page = $doc->documentElement; 

// we retrieve the chapter and remove it from the book 
$scripts = $page->getElementsByTagName('script'); 
foreach($scripts as $script) { 
    $page->removeChild($script); 
} 

echo $doc->saveHTML(); 
?> 
+0

正規表現よりも遅いのでDOMを避けていましたが、ここでは多くの解析関数は必要ありません。しかし、それはあまりにも(そして、必要な)小さな構文解析のために非常に信頼できるようです! – Googlebot

+3

より高速で信頼性が低いか、遅く信頼性が高いですか?永遠の疑問。 –

+0

信頼性を優先してスピードを犠牲にすることだけではありません。 DOMDocumentはHTMLページを単純に解析するのではなく、ほとんどの場合、大量のエラーが返されます。たとえば、現在のページのhtmlコードをindex.htmlとして保存し、上記のコードを実行します。 "DOMDocument :: load():オープンとエンディングのタグの不一致"のエラーが多く返されます... – Googlebot

関連する問題