PHP 中的 DOMDocument 转义结束字符

发布于 2024-12-05 21:41:54 字数 747 浏览 1 评论 0原文

我对 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 />';

I have a problem with class DOMDocument. I use this php class to edit a html template. I have in this template this meta tag:

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

But after editing, although I was not editing this tag, it escapes the end char "/" and it doesn't work.
This is the script:

$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 />';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野の 2024-12-12 21:41:54

请参阅此问题提供的答案:为什么' PHP DOM 在自结束标记上包含斜杠?

简而言之,DOMDocument->saveHTMLFile() 将其内部结构输出为常规旧 HTML,而不是 XHTML。如果您确实需要 XHTML,则可以使用 DOMDocument->saveXMLFile() ,它将使用自关闭标签。此方法的唯一问题是某些 HTML 标记无法使用自闭合标记,例如

我建议忽略这个问题,除非你必须修复它。自闭合标签是 XHTML 的遗物,在 HTML5 中未使用

Please see the answer provided by this question: Why doesn't PHP DOM include slash on self closing tags?

In short, DOMDocument->saveHTMLFile() outputs its internal structure as regular old HTML instead of XHTML. If you absolutely need XHTML, you can use DOMDocument->saveXMLFile() which will use self-closing tags. The only problem with this method is some HTML tags cannot use self-closing tags like <script> and <style> so you have to put a space in their content so that they don't use self-closing tags.

I would recommend just ignoring the issue unless it is mandatory that you fix it. Self-closing tags are a relic of XHTML and are unused in HTML5.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文