PHP:无法打印DOMDocument的第一个值

时间:2014-10-13 14:15:38

标签: php domdocument

我有一个PHP脚本应该读取HTML文件,然后返回它找到的第一个<h1>标记的内容。我不想使用正则表达式或简单的HTML DOM解析器 - 只需简单易用的PHP。

到目前为止,这是我的代码:

$document = new DOMDocument();
$document->loadHTMLFile($post_url);
$matches = $document->getElementsByTagName('h1');
$first_h1 = $matches->item(0);
echo $first_h1;

但是,当我运行代码时,出现错误PHP Catchable fatal error: Object of class DOMElement could not be converted to string

任何人都可以帮助我解决我的错误吗?

提前致谢!

解决方案:用echo $first_h1->nodeValue;替换最后一行似乎可以解决问题。

3 个答案:

答案 0 :(得分:1)

问题是$first_h1是一个DOMElement对象而不是一个字符串,并且它没有将自身转换为字符串的方法,因此您不能简单地将其回显。但是,您可以对其执行var_dump

$document = new DOMDocument();
$document->loadHTMLFile($post_url);
$matches = $document->getElementsByTagName('h1');
$first_h1 = $matches->item(0);
var_dump($first_h1);

如果需要获取元素的文本内容(即标记之间的文本),请使用nodeValue属性:

echo $first_h1->nodeValue;

答案 1 :(得分:0)

$ document 是一个无法转换为字符串的对象(某些对象可以)。

有关它必须提供的所有属性和方法,请参阅此 link ,例如

echo $document->tagName;

echo $document->textContent;

答案 2 :(得分:0)

您还可以使用DOMNode类的C14N方法获取整个标记值:

echo $first_h1->C14N();

http://bg2.php.net/manual/en/domnode.c14n.php