PHP:使用 DOM 类构建<script>元素



>我有一个HTML生成器,它使用DOM类来构建文档并生成HTML。我的目标是与HTML兼容的XHTML,如XHTML 1.0规范的附录C中所述。

这是一个产生<script>元素的问题:

$document = new DOMDocument();
$element = $document->createElement('script');
$script = $document->createTextNode('console.log(1 && 1);');
$element->appendChild($script);
$document->appendChild($element);
echo $document->saveXML($document->childNodes[0]);

实际输出:

<script>console.log(1 &amp;&amp; 1);</script>

期望输出:

<script>console.log(1 && 1);</script>

如何在未转义实体的情况下获得所需的输出?

正确答案必须考虑到这种情况发生在生成各种 HTML 元素的生成器中,而不仅仅是<script>,并生成正确的 XHTML。(这就是为什么我首先使用saveXML而不是saveHTML。如果答案导致生成器失败或错误地生成其他 HTML 元素,则它不是正确答案。

不要saveXML,使用saveHTML

$document = new DOMDocument();
$element = $document->createElement('script');
$script = $document->createTextNode('console.log(1 && 1);');
$element->appendChild($script);
$document->appendChild($element);
echo $document->saveHTML($document->childNodes[0]);

演示:https://3v4l.org/63H0L

在 XML 中,&用于标记实体。

使用 change saveXML 来保存 HTML

echo $document->saveHTML($document->childNodes[0]);

相关内容

  • 没有找到相关文章

最新更新