ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用してクラス名によって DOM 要素を効率的に取得するにはどうすればよいですか?

PHP を使用してクラス名によって DOM 要素を効率的に取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 13:48:15
オリジナル
550 人が閲覧しました

How Can I Efficiently Retrieve DOM Elements by Class Name Using PHP?

クラス名による 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート