用户在我的 PHP 代码中调用 Web 服务 API,但没有正确编码输入(如 & 符号等),所以因为胡说八道(我不能在这里使用 b* 词,但你知道开发人员不在乎关于政治或感情,你做对与否!)修复它是我的问题......在我尝试用 PHP 解析输入 XML 之前,如何对其进行编码?
我为 & 符号做了一个字符串替换,但是这些人(a* 词)可以使用的宇宙中有更多的无效字符。
用户在我的 PHP 代码中调用 Web 服务 API,但没有正确编码输入(如 & 符号等),所以因为胡说八道(我不能在这里使用 b* 词,但你知道开发人员不在乎关于政治或感情,你做对与否!)修复它是我的问题......在我尝试用 PHP 解析输入 XML 之前,如何对其进行编码?
我为 & 符号做了一个字符串替换,但是这些人(a* 词)可以使用的宇宙中有更多的无效字符。
如果没有更多细节和代码,很难准确地说出您需要什么,但请查看urlencode()
或htmlentities()
或htmlspecialchars()
http://php.net/manual/en/function.urlencode.php
我几乎完全确定在 php.ini 中没有内置功能可以做到这一点。因为 php 的模块需要的最低限度是......一个正确编码的 xml 文件(例如对于 libxml / libdom)
编码不当的文件很难清理,因为您必须考虑“应该编码什么”和“不应该编码什么”
您需要标记您的输入 xml,然后您需要检查每一段并清理错误的代码段,例如属性中包含的字符 "
这是一项艰苦的工作,那么您可以做的更好的事情是修复或修复源 xml
恕我直言!
我建议返回 HTTP 400 错误,这意味着“由于语法错误,服务器无法理解请求”。( RFC 2616 )
由于您期待有效的 XML,您可以使用 将其加载到DOMDocument中loadXml
并使用结果libxml_get_errors
来查看 XML 错误(我libxml_use_internal_errors(true)
也建议使用)。
您可以在响应正文中返回 libxml 错误(例如“请求中未转义的'&'”等)。