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

通过php dom解析器获取锚定标记之间的图像链接,php,dom,domdocument,Php,Dom,Domdocument,我正在尝试读取给定url中的所有链接 以下是我正在使用的代码: $dom = new DomDocument(); @$dom->loadHTMLFile($url); $urls = $dom->getElementsByTagName('a'); foreach ($urls as $url) { echo $url->innertext ." => ".$url->getAttribute('href'); 提供给定url的所有链接的脚本

我正在尝试读取给定url中的所有链接

以下是我正在使用的代码:

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

foreach ($urls as $url) {
        echo $url->innertext ." => ".$url->getAttribute('href');
提供给定url的所有链接的脚本

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

首先我试着用

$url->nodeValue

但它给出的锚文本只有文本值

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

输入:

<a href="link1.php">first link</a>
<a href="link2.php"> <img src="imageone.jpg"></a>
所需输出:

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

innerText
在PHP中不存在;它是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;
}
请注意,您需要在PHP5.3.6之前使用
saveXML

你可以这样称呼它:

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

innerText
在PHP中不存在;它是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;
}
请注意,您需要在PHP5.3.6之前使用
saveXML

你可以这样称呼它:

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

您得到的输出是什么?您想要什么输出?仅获取href值。对于文本/图像b/w锚定标记,给出警告“未定义属性:domeElement:$innertext in/home/url/public_html/craw2.php”@Alfred,这无助于澄清您的问题。请提供一个示例标记和一些您想从中获取的输出。至于innerText:在DOMNode或domeElement中没有这样的属性。@Gordon:谢谢。现在更新了当前和所需的输出。请参阅更新的问题-您得到的输出可能重复?您想要什么输出?仅获取href值。对于文本/图像b/w锚定标记,给出警告“未定义属性:domeElement:$innertext in/home/url/public_html/craw2.php”@Alfred,这无助于澄清您的问题。请提供一个示例标记和一些您想从中获取的输出。至于innerText:在DOMNode或domeElement中没有这样的属性。@Gordon:谢谢。现在更新了当前和所需的输出。请参阅更新的问题可能重复的问题。请根据我的代码更新您的答案。实际上,我没有得到准确的答案。给出错误“DOMDocument::saveHTML()需要准确的0个参数,1个给定”。@Alfred请参阅我答案中的注释。很明显,您使用的是旧版本的PHP。将
saveHTML
更改为
saveXML
应该可以正常工作。请您根据我的代码更新您的答案。实际上我没有得到准确的答案。给出错误“DOMDocument::saveHTML()需要准确的0个参数,给定1个”。@Alfred请参阅我答案中的注释。很明显,您使用的是旧版本的PHP。将
saveHTML
更改为
saveXML
应该可以正常工作。