PHP中的POST字符串解码

时间:2010-04-01 10:55:26

标签: php decoding

PHP中的任何内置函数都可以解码

przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587

przysięgamsłużyć

4 个答案:

答案 0 :(得分:2)

urldecode - 解码网址编码的字符串

但我认为这对多字节字符串不起作用。有关可能的用户态解决方法,请参阅手册页上的注释以及http://www.zend.com//code/codex.php?ozid=839&single=1

答案 1 :(得分:2)

我的猜测是你遇到了urldecode和多字节字符的问题。 Urldecode只能解码8位字符,而您的字符串包含多字节字符。

检查urldecode manual page comments以获取解决方案。

答案 2 :(得分:2)

好的,戈登和马诺斯,你们都是对的(而且都错了;)

这只是正常的'urldecode',但是应用两次

$a = "przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587";
$b = urldecode(urldecode($a));
var_dump($b);

答案 3 :(得分:0)

你试过这个:

    function utf8_urldecode($str) {
      $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
      return html_entity_decode($str,null,'UTF-8');;
  }

取自http://php.net/manual/en/function.urldecode.php

编辑:你的初始字符串搞砸了。你有两次urlencode吗?导致utf8_urldecode(utf8_urldecode($ encoded string))给出正确的结果。