【问题标题】:DOMDocument escaping end chars in PHPDOMDocument在PHP中转义结束字符
【发布时间】:2011-09-22 07:26:17
【问题描述】:

我对 DOMDocument 类有疑问。我使用这个 php 类来编辑一个 html 模板。我在这个模板中有这个元标记:

<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>

但是编辑后,虽然我没有编辑这个标签,但它转义了结束字符“/”,它不起作用。 这是脚本:

$textValue = $company.'<br />'.$firstName.' '.$lastName.'<br />'.$adress;

$values = array($company, $firstName.' '.$lastName, $adress);

$document = new DOMDocument;

$document->loadHTMLFile($dir.'temp/OEBPS/signature.html');

$dom = $document->getElementById('body');
for ($i = 0; $i < count($values); $i++) {
$dom->appendChild($document->createElement('p', $values[$i]));
}


$document->saveHTMLFile($dir.'temp/OEBPS/signature.html');
echo 'signature added <br />';

【问题讨论】:

  • 我无法重现您的问题;你能更具体地说明什么不起作用吗?
  • 问题是,当我通过方法 loadHTMLFile 加载 HTML 模板,而不是通过方法 saveHTMLFile 保存时,所以虽然我没有编辑元标记,但这个标记无论如何都没有结束字符 / .我用它来编辑 ePub 格式,当这里缺少这个 end char 时它不起作用。对不起我的英语不好:)。

标签: php dom escaping


【解决方案1】:

请看这个问题提供的答案:Why doesn't PHP DOM include slash on self closing tags?

简而言之,DOMDocument-&gt;saveHTMLFile() 将其内部结构输出为常规的旧 HTML 而不是 XHTML。如果你绝对需要 XHTML,你可以使用DOMDocument-&gt;saveXMLFile(),它将使用自闭合标签。这种方法的唯一问题是一些 HTML 标签不能使用像 &lt;script&gt;&lt;style&gt; 这样的自关闭标签,所以你必须在它们的内容中放置一个空格,这样它们就不会使用自关闭标签。

我建议您忽略该问题,除非您必须修复它。自闭合标签是 XHTML 的遗物,是 unused in HTML5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2017-04-03
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多