Php “产出困难”;HTML字符串代码“;通过XML

Php “产出困难”;HTML字符串代码“;通过XML,php,xml,ajax,Php,Xml,Ajax,通过XML输出“HTML字符串代码”有很多困难。在服务器端,我有一些用PHP编写的代码 $htmlCode = "<div>...........................</div>"; header("Content-type: text/xml"); echo "<?xml version='1.0' encoding='ISO-8859-1'?>"; echo "<info>"; echo "<htmlCode>";

通过XML输出“HTML字符串代码”有很多困难。在服务器端,我有一些用PHP编写的代码

$htmlCode = "<div>...........................</div>";

header("Content-type: text/xml");

echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
echo "<info>";
echo "<htmlCode>";
echo $htmlCode;
echo "</htmlCode>";
echo "</info>";
我如何解决这个问题?我希望我的话足够具体,让你理解我的问题

您正在寻找的

术语CDATA用于描述不应由XML解析器解析的文本数据

解析器将忽略CDATA节中的所有内容

CDATA部分以
开头,以
]>
结尾:

//转义结束标记
$htmlCode=str_替换(“]]>”、“]]>”、$htmlCode);
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
添加了要查找的

的转义修复程序

术语CDATA用于描述不应由XML解析器解析的文本数据

解析器将忽略CDATA节中的所有内容

CDATA部分以
开头,以
]>
结尾:

//转义结束标记
$htmlCode=str_替换(“]]>”、“]]>”、$htmlCode);
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
添加了使用
htmlspecialchars()
的转义修复程序。尽管此函数是以HTML命名的,但它对于XML也是完全可以接受的。(
htmlentities()
不会,但无论如何,您几乎都不想使用它。)


使用CDATA节也可以,但是如果您需要转义序列
]>
,那么与XML编码相比就没有什么优势了。

使用
htmlspecialchars()
。尽管此函数是以HTML命名的,但它对于XML也是完全可以接受的。(
htmlentities()
不会,但无论如何,您几乎都不想使用它。)



使用CDATA节也可以,但是如果您需要转义序列
]>
,那么与XML编码相比,这并没有多大优势。

不要从字符串构建XML。别这样。有现成的库可以做正确的事情。是其中之一

$myHtmlString = "<div>Some HTML</div>";

$xml  = new DOMDocument('1.0', 'utf-8');

$info = $xml->createElement('info');
$xml->appendChild($info);

$htmlCode = $xml->createElement('htmlCode', $myHtmlString);
$info->appendChild($htmlCode);

echo $xml->saveXML();
$myHtmlString=“一些HTML”;
$xml=新的DOMDocument('1.0','utf-8');
$info=$xml->createElement('info');
$xml->appendChild($info);
$htmlCode=$xml->createElement('htmlCode',$myHtmlString);
$info->appendChild($htmlCode);
echo$xml->saveXML();

这似乎是一种更复杂的方法,但事实上这可以确保XML是正确的。相比之下,仅仅将几个字符串放在一起会在某个时候出错。

不要从字符串构建XML。别这样。有现成的库可以做正确的事情。是其中之一

$myHtmlString = "<div>Some HTML</div>";

$xml  = new DOMDocument('1.0', 'utf-8');

$info = $xml->createElement('info');
$xml->appendChild($info);

$htmlCode = $xml->createElement('htmlCode', $myHtmlString);
$info->appendChild($htmlCode);

echo $xml->saveXML();
$myHtmlString=“一些HTML”;
$xml=新的DOMDocument('1.0','utf-8');
$info=$xml->createElement('info');
$xml->appendChild($info);
$htmlCode=$xml->createElement('htmlCode',$myHtmlString);
$info->appendChild($htmlCode);
echo$xml->saveXML();

这似乎是一种更复杂的方法,但事实上这可以确保XML是正确的。相比之下,仅仅把几根绳子放在一起在某一点上就会出错。

这不是无懈可击的。如果HTML数据包含序列
]]>
(这在HTML中非常有效),它将提前结束CDATA部分。嗨,Pekka!我使用了您给我的第一个答案,经过一段时间后,没有]]>。我不知道我是怎么做到的,但至少起了作用。我正要发帖问如何删除“]]>”这不是无懈可击的。如果HTML数据包含序列
]]>
(这在HTML中非常有效),它将提前结束CDATA部分。嗨,Pekka!我使用了您给我的第一个答案,经过一段时间后,没有]]>。我不知道我是怎么做到的,但至少起了作用。我想问一个问题,如何使用DOM类删除“]]>”是处理XML的最佳方法。但是,我认为如果示例将字符串$myHtmlString作为XML片段加载会更好。使用DOM类是处理XML的最佳方法。但是,我认为如果示例将字符串$myHtmlString作为XML片段加载,则效果会更好。
<?php
    $htmlCode = "<div>...........................</div>";

    header("Content-type: text/xml");
    echo '<?xml encoding="ISO-8859-1"?>'; // really? sure?
?>
<info>
    <htmlCode><?php echo htmlspecialchars($htmlCode); ?></htmlCode>
</info>
$myHtmlString = "<div>Some HTML</div>";

$xml  = new DOMDocument('1.0', 'utf-8');

$info = $xml->createElement('info');
$xml->appendChild($info);

$htmlCode = $xml->createElement('htmlCode', $myHtmlString);
$info->appendChild($htmlCode);

echo $xml->saveXML();