Emin değilim doğru soruyu anlamak, ancak ikinci XPath ifadesi zaten açıklayan yapar. Bu bir elemanın metin düğümü, ama href özniteliği karşı eşleşmiyor:
$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')]");
Çıkışlar:
array(1) {
[0]=>
object(SimpleXMLElement)#2 (2) {
["@attributes"]=>
array(1) {
["href"]=>
string(31) "http://example.com/page?foo=bar"
}
[0]=>
string(11) "Description"
}
}
Gördüğünüz gibi, iade NodeList href içeren foo (Ben aradığınız ne olduğunu anlamak olan) yalnızca bir öğesi içeriyor. XPath Fetch all A elements with href attribute containing foo çevirir, çünkü tüm öğeyi contans. Daha sonra birlikte öznitelik erişmeye olur
echo $list[0]['href'] // gives "http://example.com/page?foo=bar"
Sadece nitelik kendisi döndürmek istiyorsanız, yapmanız gerekiyor
//a[contains(@href,'foo')]/@href
SimpleXMLElement, bu olsa XML elemanına döneceğini unutmayın:
array(1) {
[0]=>
object(SimpleXMLElement)#3 (1) {
["@attributes"]=>
array(1) {
["href"]=>
string(31) "http://example.com/page?foo=bar"
}
}
}
ama sen tarafından şimdi çıktı URL'yi can
echo $list[0] // gives "http://example.com/page?foo=bar"