我正在尝试通过其ID从外部页面(包含一些内容的div标签)获取元素,并将其打印到网站上的另一个页面。我正在尝试使用下面的代码,但是我在包含元素中获得了标记错误(figcaption,图)。反正是否只包含一个div来自另一个页面的ID?
PHP
>>> max(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> max(1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>>
HTML
$doc = new DOMDocument();
$doc->loadHTMLFile($_SERVER['DOCUMENT_ROOT'].'/assets/includes/example.html');
$example = $doc->getElementById('test');
echo $example->nodeValue;
?>
答案 0 :(得分:1)
您当前只有echo
个节点值,它将是文本。由于#test
中没有文字,因此不会输出任何内容。
您必须将其打印为HTML:
echo $doc->saveHTML($example);
答案 1 :(得分:1)
由于DTD检查不可能,即使没有错误,HTML5上的DOMDocument也会输出错误。
为避免这种情况,只需以这种方式更改代码:
libxml_use_internal_errors( True );
$doc->loadHTMLFile( '$_SERVER['DOCUMENT_ROOT'].'/assets/includes/example.html' );
无论如何 - 即使显示了一些错误 - 您的代码正确加载了HTML文档,但由于您使用了错误的语法,因此无法显示<div>
:更改echo $example->nodeValue
用:
echo $doc->saveHTML( $example );
打印DOM HTML的正确语法是DOMDocument->saveHTML()
,或者 - 如果您只想打印文档的一部分 - DOMDocument->saveHTML( DOMElement )
。
另请注意,DOMDocument旨在不尝试保留原始文档的格式,因此您可能无法获得此内容:
<div id="test">
<figure>
<img src="img1.jpg" alt="img" />
<figcaption></figcaption>
</figure>
</div>
但是这个:
<div id="test">
<figure><img src="img1.jpg" alt="img"><figcaption></figcaption></figure>
</div>