gpt4 book ai didi

php - 如何在 PHP 中验证 XML 的 CDATA 部分

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:43 26 4
gpt4 key购买 nike

我根据用户输入创建了一个 XML。其中一个 xml 节点有一个 CDATA 部分。如果 CDATA 部分中插入的字符之一是“特殊”(我认为是控制字符),则整个 xml 将无效。

例子:

$dom = new DOMDocument('1.0', 'utf-8');
$dom->appendChild($dom->createElement('root'))
->appendChild($dom->createCDATASection(
"This is some text with a SOH char \x01."
));

$test = new DOMDocument;
$test->loadXml($dom->saveXML());
echo $test->saveXml();

会给予

Warning: DOMDocument::loadXML(): CData section not finished
This is some text with a SOH cha in Entity, line: 2 in /newfile.php on line 17

Warning: DOMDocument::loadXML(): PCDATA invalid Char value 1 in Entity, line: 2 in /newfile.php on line 17

Warning: DOMDocument::loadXML(): Sequence ']]>' not allowed in content in Entity, line: 2 in /newfile.php on line 17

Warning: DOMDocument::loadXML(): Sequence ']]>' not allowed in content in Entity, line: 2 in /newfile.php on line 17

Warning: DOMDocument::loadXML(): internal errorExtra content at the end of the document in Entity, line: 2 in /newfile.php on line 17
<?xml version="1.0"?>

在 php 中是否有确保 CDATA 部分有效的好方法?

最佳答案

允许的range of characters对于 CDATA section

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

因此您必须清理您的字符串以仅包含这些字符。

关于php - 如何在 PHP 中验证 XML 的 CDATA 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com