urlencode .可用urldecode出来。

解决方案 »

  1.   

    显然是自定义函数$s = join('%', array_merge(array(''), str_split(bin2hex('-'), 2)));
    echo $s;%2d
      

  2.   


    我也觉得是这样,但是试了这两个函数,输入还都是原来的-echo urlencode('-');
    echo urldecode('-');显示的都是--
      

  3.   

    RFC 3986:http://www.faqs.org/rfcs/rfc3986.html
    中提到:unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~  
    这些非保留字符,在urlencode时,应该使用原有的字符。也就是:
    urlencode("-"),
    urlencode("字母"),
    urlencode(数字)
    urlencode(".")
    urlencode("_")
    urlencode("~")都是原来的字符。( 在 PHP 5.3.0 之前,rawurlencode 根据 » RFC 1738 来编码波浪线(~)。 )
    可能这种解释不一定准确。、
    但是urldecode("%2d") 确实是“-”注意urlencode和rawurlencode的编码标准并不同。