ホームページ  >  記事  >  バックエンド開発  >  JS の代わりに PHP を使用して DOM_PHP を操作するためのアイデアとサンプル コード チュートリアル

JS の代わりに PHP を使用して DOM_PHP を操作するためのアイデアとサンプル コード チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:28:10830ブラウズ

問題の原因は比較的単純で、ナビゲーション ページのデータを整理してデータベースに書き込む必要があります。より直感的な方法は、HTML ファイルを分析することです。一般的な方法は、PHP 正規表現を使用して照合することです。ただし、この方法では開発と保守が難しく、コードの可読性も非常に悪いです。

ナビゲーションページのデータはDOMツリーに規則的に配置されており、JSを使用した複数のループで簡単に操作できます。また、JSはブラウザに依存する必要があり、データベースの操作は困難です。実際、PHP には、DOM ツリー内のノードを追加、削除、変更、確認するための既製のクラス ライブラリがあります。ここでいくつかメモします。

ここには、DOMDocument と DOMXPath という 2 つのクラスが関係しています。

実際、アイデアは比較的明確です。つまり、DOMDocument を通じて HTML ファイルを DOM ツリーのデータ構造に変換し、次に DOMXPath のインスタンスを使用して DOM ツリーを検索し、必要な特定のノードを取得します。その後、現在のノード Traverse のサブツリーを検索して、目的の結果を得ることができます。

現在のディレクトリにこのようなナビゲーション HTML ファイル「./hao.html」があります

ここで、すべての タグの中国語コンテンツを取得する必要があります。PHP コードは次のとおりです:

コピーコード コードは次のとおりです:

//HTML/xml ファイルを DOM ツリーに変換します
$dom = new DOMDocument();
$dom->loadHTMLFile("hao.html") );

//クラス修正を含むすべての dl タグを取得します

// 例 1: ID を持つすべてのものについて
//$elements = $xpath->query("//*[@id]");
// 例 2: 選択された ID のノード データの場合
//$elements = $xpath->query("/html/body/div[@id='yourTagIdHere']"); 例 3 : ワイルドカードを使用した上記と同じ
//$elements = $xpath->query("*/div[@id='yourTagIdHere']");
$xpath = new DOMXPath($dom); xpath->query(' //dl[@class="fix"]');

foreach ($dls として) {
$spans = $dl->childNodes
foreach ($spans として $) span) {
echorim($span->textContent)."t";
}
echo "n";
?>

注: DOMDocument のデフォルトのエンコーディングはラテン語であることに注意してください。したがって、UTF エンコードされた中国語を処理する場合は、 の直後に



コードをコピーする必要があります。コードは次のとおりです。 meta http-equiv="content-type" content= "text/html; charset=utf-8">


他の場所では、または単に と書きます。認識されない。

http://www.bkjia.com/PHPjc/813508.htmlwww.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/813508.html
技術記事
問題の原因は比較的単純で、ナビゲーション ページのデータを整理してデータベースに書き込む必要があります。より直感的な方法は、HTML ファイルを分析することです。一般的な方法は、PHP を使用することです...