我正在尝试阅读给定网址中的所有链接。
这是我正在使用的代码:
$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
答案 0 :(得分:1)
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');