सुनिश्चित नहीं है कि मैं सही तरीके से प्रश्न समझता हूं, लेकिन दूसरी XPath अभिव्यक्ति पहले से ही जो आप वर्णन कर रहे हैं वह करता है। यह एक तत्व का पाठ नोड के खिलाफ मेल नहीं खाती है, लेकिन href विशेषता:
$html = <<< HTML
<ul>
<li>
<a href="http://example.com/page?foo=bar">Description</a>
</li>
<li>
<a href="http://example.com/page?lang=de">Description</a>
</li>
</ul>
HTML;
$xml = simplexml_load_string($html);
$list = $xml->xpath("//a[contains(@href,'foo')]");
आउटपुट:
array(1) {
[0]=>
object(SimpleXMLElement)#2 (2) {
["@attributes"]=>
array(1) {
["href"]=>
string(31) "http://example.com/page?foo=bar"
}
[0]=>
string(11) "Description"
}
}
आप देख सकते हैं, लौट आए NodeList युक्त href के साथ ही एक तत्व शामिल foo (जो मैं समझता हूं वह है जिसे आप ढूंढ रहे हैं)। यह पूरे तत्व का उल्लंघन करता है, क्योंकि XPath पर अनुवाद करता है, सभी गुणों को प्राप्त करें जिनमें href विशेषता है foo। इसके बाद आप
echo $list[0]['href'] // gives "http://example.com/page?foo=bar"
साथ विशेषता का उपयोग होगा यदि आप केवल विशेषता ही वापस जाने के लिए चाहते हैं, तो आपको बस इतना करना
//a[contains(@href,'foo')]/@href
ध्यान दें कि SimpleXML में, इस हालांकि एक SimpleXML तत्व वापसी होगी होगा:
array(1) {
[0]=>
object(SimpleXMLElement)#3 (1) {
["@attributes"]=>
array(1) {
["href"]=>
string(31) "http://example.com/page?foo=bar"
}
}
}
लेकिन आप
echo $list[0] // gives "http://example.com/page?foo=bar"
द्वारा उत्पादन यूआरएल अब कर सकते हैं
हां, लेकिन 'सुई' के लिए खोज * $ node-> nodeValue(); * में वांछित * http: //example.com? Param = सुई * ...? – MattW