获取和回显元素,包括使用 PHP 按 ID 发送的内容


Getting and echo element including content by ID using PHP

我正在尝试通过其ID从外部页面(div标签包括一些内容)获取元素并将其打印到站点上的另一个页面。 我正在尝试使用以下代码,但是在包含元素中出现标签错误(图说明,图)。无论如何,是否可以通过另一个页面的 ID 仅包含一个div?

.PHP

$doc = new DOMDocument();
$doc->loadHTMLFile($_SERVER['DOCUMENT_ROOT'].'/assets/includes/example.html');
$example = $doc->getElementById('test');
echo $example->nodeValue;
?>

.HTML

<div id="test">
    <figure>
        <img src="img1.jpg" alt="img" />
        <figcaption></figcaption>
    </figure>
</div>
由于无法

进行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>

你目前只echo节点值,这将是文本。由于#test中没有文本,因此不会输出任何内容。

您必须将其打印为 HTML:

echo $doc->saveHTML($example);