我需要在特定div中找到图像链接和href。 div有一个类名。我已经定制了以下代码,但不能只在具有类名媒体的div中获取这些图像。这是html结构的一个例子
<div class="media">
<a href="http://www.images.img/image.jpg" title="">
<img id="image" src="http://www.images.img/zoomin/image.jpg.jpg" alt="" title="" />
这是我的代码段:
foreach ($xpath->query('//div[class="media"]//a[@href]//img') as $img) {
for ($link = $img; $link->tagName !== 'a'; $link = $link->parentNode);
$output[] = array(
'href' => $link->getAttribute('href'),
'src' => $img->getAttribute('src'),
'alt' => $img->getAttribute('alt'),
);
}
但是它找到了带有锚标签和任何div的所有图像......
有人可以提供一些帮助吗?
答案 0 :(得分:1)
首先,您错过@
class
属性。其次,你不需要遍历树,XPath可以为你做到这一点:
foreach ($xpath->query('//div[@class="media"]//a[@href]//img/ancestor::a[1]') as $link) {
$output[] = array(
'href' => $link->getAttribute('href'),
'src' => $img->getAttribute('src'),
'alt' => $img->getAttribute('alt'),
);
}
答案 1 :(得分:1)
foreach ($xpath->query('//div[@class="media"]//a[@href]//img/ancestor::a[1]') as $link) {
foreach($xpath->query('//a[@href="' . $link->getAttribute('href') . '"]//img') as $img) {
$output[] = array(
'href' => $link->getAttribute('href'),
'src' => $img->getAttribute('src'),
'alt' => $img->getAttribute('alt')
);
}
}