[英]Get href element of parent a-tag php xpath
我有一个页面,其中包含带有 div 的链接。 链接看起来像:
<a href="http://www.url.com">
<span>
<div class="linkText">Link text</div>
</span>
</a>
我设法使用以下内容提取链接文本:
$links = $xpath->query('//div[@class="linkText"]');
foreach($links as $link) {
$container_parent = $link->parentNode->tagName; //result: span
$container_parent_parent = $link->parentNode->parentNode->tagName; //result: a
$container_parent_parent_href = $link->parentNode->parentNode->href; //doesnt work
}
我如何设法从 $container_parent_parent a获取href ?
尝试使用属性语法,因为@href
是的属性a
:
$links = $xpath->query('//div[@class="linkText"]');
foreach($links as $link) {
$container_parent = $link->parentNode->tagName; //result: span
$container_parent_parent = $link->parentNode->parentNode->tagName; //result: a
$container_parent_parent_href = $link->parentNode->parentNode['href']; // See how @href is referenced
}
使用 DOMDocument,你需要使用getAttribute()
来访问属性...
$container_parent_parent_href = $link->parentNode->parentNode->getAttribute('href');
您正在使用 Xpath 表达式,但只有使用DOMXpath:evaluate()
才能充分利用它。 它允许您使用返回标量值的表达式。 你可以用两种方式看待问题。
linkText
类查找所有元素,然后查看a
元素的祖先(不仅仅是父元素),并以字符串形式获取其src
属性。linkText
类的后代a
元素并获取其src
属性。例子:
$xml = <<<'XML'
<a href="http://www.url.com">
<span>
<div class="linkText">Link text</div>
</span>
</a>
XML;
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
foreach ($xpath->evaluate('//*[@class = "linkText"]') as $node) {
var_dump(
$xpath->evaluate('string(ancestor::a/@href)', $node)
);
}
foreach ($xpath->evaluate('//a[.//*[@class = "linkText"]]') as $a) {
var_dump(
$a->getAttribute('href')
);
}
输出:
string(18) "http://www.url.com"
string(18) "http://www.url.com"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.