0

用户在我的 PHP 代码中调用 Web 服务 API,但没有正确编码输入(如 & 符号等),所以因为胡说八道(我不能在这里使用 b* 词,但你知道开发人员不在乎关于政治或感情,你做对与否!)修复它是我的问题......在我尝试用 PHP 解析输入 XML 之前,如何对其进行编码?

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

4

3 回答 3

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

于 2012-06-27T10:35:00.853 回答
0

我几乎完全确定在 php.ini 中没有内置功能可以做到这一点。因为 php 的模块需要的最低限度是......一个正确编码的 xml 文件(例如对于 libxml / libdom)

编码不当的文件很难清理,因为您必须考虑“应该编码什么”和“不应该编码什么”

您需要标记您的输入 xml,然后您需要检查每一段并清理错误的代码段,例如属性中包含的字符 "

这是一项艰苦的工作,那么您可以做的更好的事情是修复或修复源 xml

恕我直言!

于 2012-06-27T10:44:12.243 回答
0

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

由于您期待有效的 XML,您可以使用 将其加载到DOMDocumentloadXml并使用结果libxml_get_errors来查看 XML 错误(我libxml_use_internal_errors(true)也建议使用)。

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

于 2012-06-27T10:51:19.080 回答