PHP在输入Web服务XML中编码特殊字符

时间:2012-06-27 10:30:40

标签: php

用户在我的PHP代码中调用Web服务API但是没有正确编码输入(如& sign等)因为无意义(我不能在这里使用b *字但你知道开发人员不关心政治或感受,你做得对吗!)修复它是我的问题...在尝试用PHP解析之前,如何对输入XML进行编码?

我做了&的字符串替换但是,当然这些人(a * word)可以使用的宇宙中有更多无效字符。

3 个答案:

答案 0 :(得分:0)

如果没有更多细节和代码,很难准确说出您的需求,但请查看urlencode()htmlentities()htmlspecialchars()

http://php.net/manual/en/function.urlencode.php

http://www.php.net/manual/en/function.htmlentities.php

http://uk3.php.net/manual/en/function.htmlspecialchars.php

答案 1 :(得分:0)

我几乎完全确定在php中没有内置功能。因为php的模块需要的最小值是......一个正确的编码xml文件(例如对于libxml / libdom)

不正确的编码文件难以消毒,因为您必须考虑“应编码的内容”和“不应编码的内容”

你需要对输入xml进行标记,然后你需要检查每一个部分并清理错误的代码片段,例如字符“包含在属性中

这是一项艰苦的工作,那么你能做的更好的事情就是修复或修复源xml

IMHO!

答案 2 :(得分:0)

我建议返回HTTP 400错误,这意味着“由于语法错误,服务器无法理解该请求”。 (RFC 2616

由于您期望有效的XML,您可以使用loadXml将其加载到DOMDocument并使用libxml_get_errors的结果查看XML错误(我建议使用{ {1}}也是。)

您可以在响应正文中返回libxml错误(例如,请求中的“未转义”和“请求”等)。