php在具有特定类名的div中找到带锚的图像链接

时间:2013-11-15 23:17:03

标签: php html image hyperlink

我需要在特定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的所有图像......

有人可以提供一些帮助吗?

2 个答案:

答案 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')
        );
    }

}