<span class="byline">
<ul class="foobar"></ul>
<img alt="" src="resize_image.php?src=images/newsManagement/87600069ef0dffad5fd02f862ea3787b.jpg&w=675&h=675">
<p style="text-align: justify;">
<img alt="" src="resize_image.php?src=images/newsManagement/87600069ef0dffad5fd02f862ea3787b.jpg&w=675&h=675">
<hr>
嗨,这是我的HTML。我可以使用DOMDocument获取所有图像,但我想获得ul.foobar
类之后的第一个图像。我不想要其他图片。我该如何查询。
我为所有图片尝试了这个。
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($url);
//$xpath = new DomXpath($doc);
//$entries = $xpath->query("//div[@id='newsbox']/ul[@class='foobar']");
$elements = $dom->getElementsByTagName('img');
if (!is_null($elements)) {
foreach ($elements as $element) {
echo "<br/>". $element->getAttribute('src'). ": ";
}
}
答案 0 :(得分:0)
我认为您可以将DOMXPath query与此xpath表达式一起使用:
$image = $xpath->query('//ul[@class="foobar"]/following-sibling::img')->item(0);
这将使用following-sibling为<ul class="foobar">
获取以下img兄弟,然后获取第一项。
$image
的类型为DOMElement。
在此示例中,我使用loadHTML从字符串$source
加载html。
如果要从文件加载html,可以使用loadHTMLFile。
$source = <<<SOURCE
<span class="byline">
<ul class="foobar"></ul>
<img alt="" src="resize_image.php?src=images/newsManagement/87600069ef0dffad5fd02f862ea3787b.jpg&w=675&h=675">
<p style="text-align: justify;">
<img alt="" src="resize_image.php?src=images/newsManagement/87600069ef0dffad5fd02f862ea3787b.jpg&w=675&h=675">
<hr>
SOURCE;
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($source);
$xpath = new DomXpath($dom);
$image = $xpath->query('//ul[@class="foobar"]/following-sibling::img')->item(0);