我正在尝试显示<div class="post">
中的所有链接。我的页面中有很多<div class="post">
(它是一个博客)。但是每个<div class="post">
都有很多链接,但我想显示每个div的第一个。
我的问题是如何限制我的代码只显示第一个并继续下一个div?
下面是我的代码,它获取并显示所有链接。格拉西亚斯!
<?php
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://www.mydomain.com/');
libxml_clear_errors();
$xPath = new DOMXPath($dom);
$links = $xPath->query('//div[@class="post"]/a/@href');
foreach($links as $link) {
printf("%s \n", $link->nodeValue);
}
?>
答案 0 :(得分:0)
:)
$xPath = new DOMXPath($dom);
$links = $xPath->query('//div[@class="post"]/a/@href');
$i = 1;
foreach($links as $link) {
printf("%s \n", $link->nodeValue);
if($i == 1) break;
}
答案 1 :(得分:0)
我想显示每个div的第一个[link]。
以下内容仅从每个div中的第一个链接(任意深度)询问href
//div[@class="post"]/descendant::a[1]/@href
如果您只想接受div的直接子节点的链接,请从上面删除descendant::
。
因此,与现有代码类似,PHP可能类似于
$links = $xPath->query('//div[@class="post"]/descendant::a[1]/@href');
foreach($links as $link) {
printf("%s \n", $link->value);
}
答案 2 :(得分:-1)
现在您正在搜索div中的每个链接,因此$ links中的数据根本不包含有关链接发生的div的信息。要找到每个div中的第一个链接,首先必须查询(不知何故)所有div。然后foreach div找到div中的所有链接并选择第一个(或者如果可能的话,立即选择该div中的第一个链接。
您可以通过dom对象或通过xPath获取div数组。