クラス名による DOM 要素の取得
PHP DOM を使用して HTML ドキュメントをナビゲートする場合、クラス名に基づいて要素にアクセスすることが重要になる場合があります。この質問では、指定されたクラス属性を持つ DOM ノード内のサブ要素を取得するための最も効果的なアプローチについて説明します。
Xpath セレクターのアプローチ:
Xpath セレクターは、効率的に次のことを行うことができます。指定されたクラス名に一致する要素を見つけます。たとえば、「my-class」クラスの要素を取得するには、次の Xpath を使用します。
$finder = new DomXPath($dom); $classname = "my-class"; $nodes = $finder->query("//*[contains(@class, '$classname')]");
CSS セレクターのアプローチ:
複雑なセレクターを使用して広範な DOM 要素の選択を実行するには、Zend_Dom_Query の使用を検討してください。 CSS セレクター構文をサポートしており、jQuery ライブラリに似ています。
$finder = new Zend_Dom_Query($html); $classname = 'my-class'; $nodes = $finder->query("*[class~=\"$classname\"]");
更新: Xpath *[@class~='my-class'] CSS セレクターと同等
Zend_Dom_Query の内部動作に興味がある人のために、上記の CSS セレクターは次のようにコンパイルされます。 Xpath:
[contains(concat(' ', normalize-space(@class), ' '), ' my-class ')]
この Xpath 式は、空白で囲まれている場合でも、クラス属性に指定されたクラス名が含まれることを保証します。
以上がPHP を使用してクラス名によって DOM 要素を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。