XML - 转义字符串的正确方法

XML - proper way to escape string

提问人:Nikoole 提问时间:3/20/2014 最后编辑:Nikoole 更新时间:4/17/2014 访问量:65

问:

我只想添加任何字符串的标签。

我正在使用此代码来转义字符串:

$name = $this->_dom->createElement('name', htmlspecialchars($userName, ENT_COMPAT,'utf-8'));
$item->appendChild($name);

我遇到了一个问题,我的一个用户将一些特定的符号放入名称字段,整个xml提要都坏了。我必须如何转义字符串?

谢谢你的帮助,对不起我的英语很差......

php ios iphone xml解析

评论


答:

2赞 mwu 3/20/2014 #1

我认为使用 createTextNode 添加 xml 节点的值而不是将其作为参数传递给 createElement 可能会解决您的问题。

评论

0赞 Nikoole 3/20/2014
感谢您的反馈。我将对其进行测试并在此处写下结果。
0赞 Nikoole 3/21/2014
我将在周一检查这个问题。别担心,我会检查你的答案“已接受”。非常感谢!
0赞 mwu 3/21/2014
谢谢你,但更多的是我想确保我帮了忙。:)
0赞 Nikoole 4/17/2014 #2

我的解决方案:

$title = $this->_dom->createElement('title',
    htmlspecialchars($playlist->getTitle(), 
    ENT_DISALLOWED, 'utf-8')
);

当你输出xml时,你必须剥离(替换字符)看到这个相关的链接,ENT_DISALLOWED如下:

echo str_replace('�', '', $this->_dom->saveXML());

这种方式允许我们显示任何带有 html 实体和/或特殊字符的字符串。