【PHP8.x】querySelectorAllメソッドの使い方

querySelectorAllメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

querySelectorAllメソッドは、Dom\DocumentFragmentオブジェクト内で指定されたCSSセレクタに一致する全ての子孫要素を取得するメソッドです。このメソッドは、HTMLやXMLのようなマークアップ言語で記述されたドキュメントの断片から、特定の条件に合致する複数の要素を効率的に見つけ出し、それらに対して一括で処理を行いたい場合に非常に有用です。

このメソッドは、唯一の引数としてCSSセレクタ文字列を受け取ります。このセレクタは、Web開発において要素を特定するために一般的に使用される形式であり、「#myId」(特定のIDを持つ要素)、「.myClass」(特定のクラスを持つ要素)、「a[target='_blank']」(target属性が'_blank'のa要素)など、多様な条件を指定できます。

メソッドが実行されると、Dom\DocumentFragmentが保持する全ての子孫要素を内部的に走査し、指定されたCSSセレクタの条件に合致するノードをすべて収集します。検索の結果、条件に一致する要素が一つでも見つかった場合、それらの要素を順序付けて格納したDom\NodeListオブジェクトとして返します。このDom\NodeListは、あたかも配列のように個々の要素にアクセスして、その内容の取得や変更、あるいはイベントリスナーの設定など、様々な操作を行うことができます。もし、指定されたセレクタに一致する要素が一つも見つからなかった場合でも、エラーは発生せず、要素を含まない空のDom\NodeListを返します。

この機能は、例えば、特定のクラスが適用されている全ての画像要素をまとめて非表示にしたり、特定のデータ属性を持つ全ての入力フィールドの値を変更したりといった、複数の要素に対する一括的な操作の基盤を構築する際に非常に強力な手段となります。なお、類似するquerySelectorメソッドは最初にマッチした単一の要素のみを返すため、複数の要素を対象とする場合はquerySelectorAllメソッドを利用するのが適切です。

構文(syntax)

1<?php
2
3$document = new Dom\Document();
4$document->loadHTML('
5    <div class="product-list">
6        <h2 class="title">Available Products</h2>
7        <p class="item">Laptop</p>
8        <span>Price: $1200</span>
9        <p class="item">Mouse</p>
10    </div>
11');
12
13$fragment = $document->createDocumentFragment();
14$body = $document->getElementsByTagName('body')->item(0);
15if ($body) {
16    foreach ($body->childNodes as $node) {
17        $fragment->appendChild($document->importNode($node, true));
18    }
19}
20
21$nodeList = $fragment->querySelectorAll('.item');
22
23?>

引数(parameters)

string $selectors

  • string $selectors: 検索したいCSSセレクタを指定する文字列

戻り値(return)

Dom\NodeList

指定されたCSSセレクターに一致するすべての要素のリストを返します。このリストはDom\NodeListクラスのインスタンスです。

関連コンテンツ