Php 可以将HTML内容添加到SimpleXMLElement节点

Php 可以将HTML内容添加到SimpleXMLElement节点,php,html,entity,simplexml,domdocument,Php,Html,Entity,Simplexml,Domdocument,简单的问题。是否可以在不将HTML数据自动转换为实体格式的情况下,在SimpleXMLElement(或者事实上,DOMDocument)节点中添加HTML块 例如,以这个代码段为例(此处使用DOMDocument,但SimpleXMLElement的行为完全相同): 输出为: <p>some <a>stuff</a></p> 一些东西 如果查看源代码,您将看到: <?xml version="1.0" encoding="utf-8

简单的问题。是否可以在不将HTML数据自动转换为实体格式的情况下,在SimpleXMLElement(或者事实上,DOMDocument)节点中添加HTML块

例如,以这个代码段为例(此处使用DOMDocument,但SimpleXMLElement的行为完全相同):


输出为:

<p>some <a>stuff</a></p>
一些东西

如果查看源代码,您将看到:

<?xml version="1.0" encoding="utf-8"?>
<content>&lt;p&gt;some &lt;a&gt;stuff&lt;/a&gt;&lt;/p&gt;</content>

psome astuff/a/p
。。。HTML块已自动转换为实体格式

甚至用CDATA包装块也没有帮助,因为CDATA的尖括号也会被转换

那么,有没有一种方法可以像这样添加HTML块而不执行这种自动转换

谢谢,
实际上,这种行为是非常需要的。您可以创建一个新元素(
content
),并为其分配一个新的元素。如果文本包含XML特殊字符,它们将在最终序列化中转换


如果不希望出现这种行为,首先必须显式地使用字符串创建元素节点。这是你可以做的,例如,用。然后用添加元素。

实际上,这种行为是非常需要的。您可以创建一个新元素(
content
),并为其分配一个新的元素。如果文本包含XML特殊字符,它们将在最终序列化中转换


如果不希望出现这种行为,首先必须显式地使用字符串创建元素节点。这是你可以做的,例如,用。然后使用添加元素。

问题在于您正在创建一个XML文档,而SimpleXMLElement会创建有效的标记

原始HTML标记不是有效的XML,因此被过滤掉


要创建CDATA区域,您可以尝试

问题是您正在创建一个XML文档,而SimpleXMLElement会创建有效的标记

原始HTML标记不是有效的XML,因此被过滤掉


要创建CDATA区域,您可以尝试

我相信我在阅读php手册时找到了一个解决方案

DOMDocument有一个名为的成员方法,它将帮助您实现这一点,尽管方式很复杂

以下是使用此新方法发布的上述代码的版本:

<?php
$dom = new DOMDocument( '1.0', 'utf-8' );
$de = $dom->createElement( 'content' );
$dd = $dom->createCDataSection( '<p>some <a>stuff</a></p>' );
$de->appendChild( $dd );
$dom->appendChild( $de );
echo $dom->saveXML();
?>

输出是所需的

<?xml version="1.0" encoding="utf-8"?>
<content><![CDATA[<p>some <a>stuff</a></p>]]></content>

一些东西

]>
这将帮助任何面临类似问题的人开始行动

欢迎提供更多建议:)

干杯,
我相信我在阅读php手册时找到了一个解决方案

DOMDocument有一个名为的成员方法,它将帮助您实现这一点,尽管方式很复杂

以下是使用此新方法发布的上述代码的版本:

<?php
$dom = new DOMDocument( '1.0', 'utf-8' );
$de = $dom->createElement( 'content' );
$dd = $dom->createCDataSection( '<p>some <a>stuff</a></p>' );
$de->appendChild( $dd );
$dom->appendChild( $de );
echo $dom->saveXML();
?>

输出是所需的

<?xml version="1.0" encoding="utf-8"?>
<content><![CDATA[<p>some <a>stuff</a></p>]]></content>

一些东西

]>
这将帮助任何面临类似问题的人开始行动

欢迎提供更多建议:)

干杯,
是的。我刚才也有同样的想法。。谢谢你的意见:)是的。我刚才也有同样的想法。。谢谢你的意见:)谢谢你的建议。非常感谢。谢谢你的建议。非常感谢。