2008-08-26 22 views
9

私はPHPでHTMLを操作する良い方法を探しています。たとえば、私が現在持っている問題は、不正な形式のHTMLを扱うことです。あなたが気づいたようPHPでのDOM操作

<div>This is some <b>text 

、HTMLは終了タグが欠落しています。

私はこのようになります入力を取得しています。この問題を解決するために、正規表現またはXMLパーサを使用することができます。しかし、将来私は他のDOM操作を行う必要があります。私は、JavascriptがDOM操作を扱うのと同様のDOM操作を処理する良いPHPライブラリがあるのだろうかと思います。

+0

私はそれで何かを行う前に、HTML清浄機を通じて不正なHTMLを実行します。 – TRiG

答えて

11

PHPはa PECL extension that gives you access to the features of HTML Tidyです。 Tidyは非常に強力なライブラリであり、そのようなコードと知的なやり方でタグを閉じることができるはずです。

私はそれを使用して、不正な形式のXMLとHTMLをインポートする前に、分類された広告システムによって私に送信されます。

1

DOMを操作するために、あなたが探しているものはthisだと思います。私はWebからHTML文書を解析するのに使ってきましたが、うまくいきました。

6

私はPHP Simple HTML DOMがもっとも有用でストレートなライブラリであることを発見しました。私はPECLよりも優れています。私はhow to use it to scrape myspace artist tour datesの記事(単なる一例を。)書いた

はここで今、ビルトインされたDOMライブラリは簡単にこの問題を解決することができますphp simple html dom parser.

+0

+1これまでに使用していて、これまでかなりうまく動作しています – Marcel

+0

記事へのリンクが死んでいます。 – matt

3

へのリンクです。 loadHTMLメソッドは、不正なXMLを受け取りますが、loadメソッドは受け付けません。

$d = new DOMDocument; 
$d->loadHTML('<div>This is some <b>text'); 
$d->saveHTML(); 

出力は次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html> 
    <body> 
    <div>This is some <b>text</b></div> 
    </body> 
</html> 
+0

私はもう少し文字列のエンコーディングとどのようにドキュメントフラグメント[ここ](http://stackoverflow.com/questions/8500390/fixing-unclosed-html-tags/43212965#43212965)を抽出すると同様の答えを入力しました –