1

それでは、最初の h2 要素を取得したいとしましょう。グーグルで次のような印象を受けました

$xpath->query('(//h2)[1]');

動作するはずですが、それでもノードではなく DOMNodeList を返します。それで、ここで何がうまくいかないのですか?

4

1 に答える 1

2

ただし、その [ $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)');

これがお役に立てば幸いです。

于 2013-06-23T19:51:44.297 に答える