JSの代わりにPHPを使ってDOMの考え方とコード例を遊びます。

1507 ワード

事の起源は比較的簡単です。ナビゲーションページのデータを整理してデータベースに書き込む必要があります。一つの比較的直感的な方法はhtmlファイルを分析することであり、一般的な方法はphpの正規表現で一致する。しかし、開発と維持は難しく、コードの可読性は非常に悪いです。ナビゲーションページのデータはDOMツリーに規則的に並べられています。JSではいくつかのループで簡単に操作できます。また、JSはブラウザに依存しています。データベースの操作は難しいです。PHPは既存の種類のライブラリがあります。DOM種のノードを添削して調べます。ここでメモします。ここでは2つの種類のDOMDocumentとDOMXPSに関連している。実は考え方は比較的に明確で、DOMDocumentを通じて一つのhtml fileをDOMツリーのデータ構造に変換して、DOMXPThの実例でこのDOMツリーを検索して、特定のノードがほしいと思って、次に現在のノードのサブツリーを遍歴して、所望の結果を得ることができます。現在のディレクトリの下にこのようなナビゲーション付きのhtmlファイルがあります。「.hao」は現在すべてのタグの中国語コンテンツを取得する必要があります。phpコードは以下のようになります。「head」の後について
 
<?php
// html/xml DOM
$dom = new DOMDocument();
$dom->loadHTMLFile("hao.html");

// class fix dl

// example 1: for everything with an id
//$elements = $xpath->query("//*[@id]");

// example 2: for node data in a selected id
//$elements = $xpath->query("/html/body/div[@id='yourTagIdHere']");

// example 3: same as above with wildcard
//$elements = $xpath->query("*/div[@id='yourTagIdHere']");
$xpath = new DOMXPath($dom);
$dls = $xpath->query('//dl[@class="fix"]');

foreach ($dls as $dl) {
$spans = $dl->childNodes;
foreach ($spans as $span) {
echo trim($span->textContent)."\t";
}
echo "
";
}
?>
を記入してください。他の位置にあるか、「meta content=「charset=utf-8」だけを書いても識別できません。