通过php dom解析器获取锚标记之间的图像链接

时间:2011-09-12 10:45:28

标签: php dom domdocument

我正在尝试阅读给定网址中的所有链接。

这是我正在使用的代码:

$dom = new DomDocument();
@$dom->loadHTMLFile($url);
$urls = $dom->getElementsByTagName('a');

foreach ($urls as $url) {
        echo $url->innertext ." => ".$url->getAttribute('href');

脚本给出了给定网址的所有链接。

但问题是我无法获得图像链接(锚标记内的图像)

首先我尝试了

  

$ URL->的nodeValue

但是它只给出了具有文本值的锚文本。

我想阅读图片和文字链接。 我想在下面的formmat输出。

输入:

<a href="link1.php">first link</a>
<a href="link2.php"> <img src="imageone.jpg"></a>

当前输出:

first link => link1.php
=>link2.php with warning (Undefined property: DOMElement::$innertext )

必需输出:

first link => link1.php
<img src="imageone.jpg">=>link2.php 

1 个答案:

答案 0 :(得分:1)

PHP中不存在

innerText;它是DOM的非标准Javascript扩展。

认为你想要的是innerHTML属性。没有本土方法来实现这一目标。您可以使用saveXML或PHP 5.3.6中的saveHTML方法导出每个子节点的HTML:

function innerHTML($node) {
    $ret = '';
    foreach ($node->childNodes as $node) {
        $ret .= $node->ownerDocument->saveHTML($node);
    }
    return $ret;
}

请注意,您需要在PHP 5.3.6之前使用saveXML

然后您可以这样称呼它:

echo innerHTML($url) ." => ".$url->getAttribute('href');