用户在我的PHP代码中调用Web服务API但是没有正确编码输入(如& sign等)因为无意义(我不能在这里使用b *字但你知道开发人员不关心政治或感受,你做得对吗!)修复它是我的问题...在尝试用PHP解析之前,如何对输入XML进行编码?
我做了&的字符串替换但是,当然这些人(a * word)可以使用的宇宙中有更多无效字符。
答案 0 :(得分:0)
如果没有更多细节和代码,很难准确说出您的需求,但请查看urlencode()
或htmlentities()
或htmlspecialchars()
http://php.net/manual/en/function.urlencode.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错误(例如,请求中的“未转义”和“请求”等)。