将服务器升级到php 5.4之后我遇到了1个问题
在我们的网站中,我们使用的是注册全局变量,这已从php 5.4
中删除我们使用以下代码解决了这个问题:
foreach ($_REQUEST as $key => $val) {
${$key} = $val;
}
如果$ val是英语,它的工作正常,但如果$ val是阿拉伯语lang,则此代码返回为空val
我尝试使用:urlencode()
和htmlspecialchars()
但未解决此问题。
答案 0 :(得分:0)
请勿尝试随机调用任何函数。 PHP没有检测到任何编码。每个字符只是一个字节序列,其中"零"字节没有特殊含义。所以基本上不应该是你观察失败的任何原因。
做一些调试。 var_dump($_REQUEST)
将是有序的,最好是在只有一个值的简化测试用例中。如果需要检测任何不可打印的字节,请使用echo urlencode($value)
快速获取十六进制值 - 但这仅用于调试!它不会帮助解决这个问题,即对该值进行url编码将不会使其再次用于您的应用程序(同样适用于使用htmlspecialchars()
,这对任何事情没有帮助。)
还要在代码中转储$val
。如果它确实为空,那么urlencode()或htmlspecialchars()不会改变它,错误发生在此之前。
你的问题还没有透露任何更多信息,所以请进行这些价值转储 - 如果你自己无法弄明白,那么请用这些转储更新你的问题,以供所有人查看。
答案 1 :(得分:-1)
尝试将此添加到标题中。
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-6">