それでは、最初の h2 要素を取得したいとしましょう。グーグルで次のような印象を受けました
$xpath->query('(//h2)[1]');
動作するはずですが、それでもノードではなく DOMNodeList を返します。それで、ここで何がうまくいかないのですか?
それでは、最初の h2 要素を取得したいとしましょう。グーグルで次のような印象を受けました
$xpath->query('(//h2)[1]');
動作するはずですが、それでもノードではなく DOMNodeList を返します。それで、ここで何がうまくいかないのですか?
ただし、その [
$xpath->query('(//h2)[1]');
] はノードではなく DOMNodeList を返します。それで、ここで何がうまくいかないのですか?
xpath 式の使用が構文的に正しい場合、このDOMXpath::query()
メソッドは常にa を返します。単一の要素を返すDOMNodeList
ことはありません。DOMNode
したがって、これは静止画ではなく、単なるisです。したがって、メソッドを介してそのノードリストの最初の要素にアクセスする必要があります(xpath述語の1インデックスとは異なり、ゼロインデックスです):item()
$h2 = $xpath->query('(//h2)[1]')->item(0);
query
ここで、xpath 式が無効な場合にメソッドが戻りFALSE
、致命的なエラーが発生することに注意してください。そのため、最初に戻り値を確認する必要がある場合があります (たとえば、xpath 式を動的に作成する場合)。
最終的にその h2 要素のテキスト コンテンツ (文字列値) のみを取得したい場合は、代わりにDOMXpath::evaluate()
メソッドを使用できます。xpathstring()
関数ごとに、セット内の最初のノードのテキスト値または空の文字列のみが取得されます。
$h2Text = $xpath->evaluate('string(//h2)');
これがお役に立てば幸いです。