gpt4 book ai didi

php - DOMDocument::loadXML 与 HTML 实体

转载 作者:太空狗 更新时间:2023-10-29 14:45:31 25 4
gpt4 key购买 nike

我目前在阅读 XHTML 时遇到问题,因为 XML 解析器无法识别 HTML 字符实体,所以:

<?php
$text = <<<EOF
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Entities are Causing Me Problems</title>
</head>
<body>
<p>Copyright &copy; 2010 Some Bloke</p>
</body>
</html>
EOF;

$imp = new DOMImplementation ();
$html5 = $imp->createDocumentType ('html', '', '');
$doc = $imp->createDocument ('http://www.w3.org/1999/xhtml', 'html', $html5);

$doc->loadXML ($text);

header ('Content-Type: application/xhtml+xml; charset: utf-8');
echo $doc->saveXML ();

结果:

<b>Warning</b>: DOMDocument::loadXML() [domdocument.loadxml]: Entity 'copy' not defined in Entity, line: 8 in <b>testing.php</b> on line <b>19</b>

我该如何解决这个问题,同时允许自己将页面作为 XHTML5 提供?

最佳答案

XHTML5 没有 DTD,因此您不能在其中使用老式的 HTML 命名实体,因为没有文档类型定义来告诉解析器该语言的命名实体是什么。 (除了预定义的 XML 实体 &lt;&amp;&quot;&gt; ... 和 &apos; ,尽管您通常不想使用它)。

而是使用数字字符引用 ( &#169; ),或者更好的是,只是一个普通的未编码 ©字符(在 UTF-8 中;记得包含 <meta> 元素以表示字符集到非 XML 解析器)。

关于php - DOMDocument::loadXML 与 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2262051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com