2011-12-31 7 views
1

PHPでは、特定のテキストを含むDOMElementをすべて取得します。特定のテキストでDOMElementを取得するPHP/XPath

$xpath->query("//text()[contains(., 'My String')]")の場合DOMTextが得られますが、代わりにDOMElementを取得するためにはどのクエリを実行する必要がありますか?

答えて

4

使用は:

(//*[text() 
     [contains(., 'My String')] 
    ] 
)[1] 

これは文字列"My String"を含むテキストノードの子を持つXML文書内の最初の要素を選択します。あなたが探している要素が1つだけのテキストノードの子を持つことが保証されている場合は、この

//*[text() 
     [contains(., 'My String')] 
    ] 

:唯一のそのような要素が存在することが保証されている場合は

、上記の式は次のように単純化することができますそれぞれ

(//*[contains(., 'My String')])[1] 

:式がに簡素化することができる

//*[contains(., 'My String')] 
+0

ちょうど私が必要なもの、ありがとう! – TMichel

+0

@ TMichel:どうぞよろしくお願いいたします。この回答を受け入れることを検討してください(回答の横にあるチェックマークをクリックしてください)。 –

1

//text()[contains(., 'My String')]/..のようなパスを試してください。

+0

マーティン、通常あり逆軸を含まない式。 –

関連する問題