PHP - DOMパーサーの例
こんにちは、若いコード愛好家の皆さん!今日は、PHPとDOMパーサーの世界に楽しい冒険をすることになります。あなたの近所の親切なコンピュータ教師として、私はこの冒険を一歩一歩ガイドします。では、仮想のヘルメットをかぶり、一緒に潜りましょう!
DOMパーサーとは?
コードに飛び込む前に、DOMパーサーとは何について理解しましょう。本を読んでいると考えてみてください。DOM(Document Object Model)はその本の構造のようなものです - 章や段落、文です。DOMパーサーはページをめくるようなもので、すべてがどのように組織されているかを理解します。ウェブの世界では、HTMLドキュメントをナビゲートし操作するのに役立ちます。
今日のミッション
私たちはPHPスクリプトを作成し、HTMLファイルを読み取り、特定の情報を抽出して表示します。これは探偵の仕事のようですが、犯罪を解決する代わりに、ウェブページのミステリーを解決することです!
例
まず、私たちのHTMLファイルから始めましょう。example.html
という名前を付けます:
<html>
<body>
<h1>私のホームページ</h1>
<div class="menu">
<ul>
<li>HTML</li>
<li>PHP</li>
<li>JavaScript</li>
</ul>
</div>
</body>
</html>
次に、このHTMLをパースするためのPHPスクリプトを作成します。dom_parser.php
という名前を付けます:
<?php
// HTMLファイルを読み込み
$htmlContent = file_get_contents("example.html");
// 新しいDOMDocumentオブジェクトを作成
$dom = new DOMDocument();
// HTMLコンテンツをDOMDocumentに読み込み
$dom->loadHTML($htmlContent);
// 新しいDOMXPathオブジェクトを作成
$xpath = new DOMXPath($dom);
// すべての<li>要素を見つける
$liElements = $xpath->query("//li");
// 各<li>要素の内容を表示
foreach ($liElements as $li) {
echo $li->nodeValue . "<br>";
}
?>
これを一つずつ分解してみましょう:
1. HTMLファイルを読み込み
$htmlContent = file_get_contents("example.html");
この行は、私たちのHTMLファイルの全部を読み込み、$htmlContent
変数に保存します。これは本を開いてすべてのページのスナップショットを取るようなものです!
2. DOMDocumentオブジェクトを作成
$dom = new DOMDocument();
ここでは、新しいDOMDocumentオブジェクトを作成しています。これを特別な拡大鏡と考え、HTML構造をより詳細に見るのに役立ちます。
3. HTMLをDOMDocumentに読み込み
$dom->loadHTML($htmlContent);
今、私たちは特別な拡大鏡(DOMDocument)を使ってHTMLコンテンツを見ます。このステップでHTMLをパースの準備を行います。
4. DOMXPathオブジェクトを作成
$xpath = new DOMXPath($dom);
XPathは私たちのHTML構造をナビゲートするための羅針盤のようなものです。この行はXPathオブジェクトを作成し、HTML内の特定の要素を見つけるために使用します。
5.
$liElements = $xpath->query("//li");
ここで魔法が起こります!XPathを使ってHTML内のすべての<li>
要素を見つけます。//li
という表現は「ドキュメント中のすべての<li>
要素を見つける」という意味です。
6. 結果を表示
foreach ($liElements as $li) {
echo $li->nodeValue . "<br>";
}
最後に、見つけた各<li>
要素をループで回り、その内容(nodeValue)を表示します。各項目の後ろに<br>
タグを追加して、別行にします。
スクリプトの実行
このPHPスクリプトを実行すると、以下のように出力されます:
HTML
PHP
JavaScript
これで、私たちはHTMLファイルからリストアイテムを無事に抽出しました!
使用したメソッド
以下は、私たちのスクリプトで使用した主要なメソッドの表です:
メソッド | 説明 |
---|---|
file_get_contents() | ファイル全体を読み込んで文字列に |
new DOMDocument() | 新しいDOMDocumentオブジェクトを作成 |
loadHTML() | 文字列からHTMLを読み込む |
new DOMXPath() | 新しいDOMXPathオブジェクトを作成 |
query() | 指定されたXPath表現を評価 |
nodeValue | ノードの値を取得 |
結論
そして、皆さん!私たちはPHPでのDOMパーサーの世界への第一歩を踏み出しました。実践が大事ですので、さまざまなHTML構造やXPathクエリを試してみてください。
私の教師としての経験から言えることは、実際にやることで学ぶのが一番です。では、少し宿題を用意しました:スクリプトを修正して、HTMLから異なる要素を抽出してみてください。例えば、<h1>
タグの内容を取得するか、特定のクラスを持つすべての要素を取得するなどです。
ハッピーコーディング、そしてDOMと共に歩みましょう!
Credits: Image by storyset