编码$ _SERVER变量,例如$ _SERVER [' REQUEST_URI']

时间:2011-12-19 11:19:04

标签: php

我需要对$_SERVER值进行一些字符串操作,尤其是$_SERVER['REQUEST_URI']

PHP如何编码这样的字符串?我应该使用mb_*家庭功能吗?

为了更好地理解我的问题,假设我的网络服务器上有一个页面,如下所示:

ããã.php

我需要得到第二个字符:

echo mb_substr($_SERVER['REQUEST_URI'],1,1);

2 个答案:

答案 0 :(得分:4)

  

PHP如何编码这样的字符串?

PHP不会对字符串执行任何操作,但Web浏览器通常percent encode REQUEST_URI中的任何非ASCII字符。 (我说“通常”是因为我看到IE 没有这样做。但是,我希望Apache在这种情况下能够完成这项任务 - 但我不确定它是否会这样做。你会必须尝试。)

运行urldecode()会解码这些字符。

相关阅读:Unicode characters in URLs

答案 1 :(得分:0)

$_SERVER['REQUEST_URI']通常不包含需要使用多字节函数的东西,所以我想如果你不倾向于对请求URI做一些不寻常的事情,比如用非ASCII字符填充它们(由奇怪的URI重写等。)您可以安全地使用“普通”PHP字符串操作函数。