Heim  >  Artikel  >  Backend-Entwicklung  >  PHP函数详解:urlencode()

PHP函数详解:urlencode()

WBOY
WBOYOriginal
2016-07-25 08:46:411322Durchsuche
urlencode函数将传入的字符串参数进行URL编码。其返回的字符串中除了“ˉ—.”之外,所有非字母数字字符都被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此函数便于将字符串编码并将其用于URL的请求部分,同时还便于将变量传递给下一页。
URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、Google等搜索引擎中输入中文查询时候,生 成经过 Encode过的网页URL。URLEncode的方式一般有两种一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),一种是 基于UTF-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。
  • 中文 -> GB2312的Encode -> %D6%D0%CE%C4
  • 中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87
Html中的URLEncode
编码为GB2312的html文件中,http://www.nowamagic.net/中文.rar -> 浏览器自动转换为 -> http://www.nowamagic.net/%D6%D0%CE%C4.rar
注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以。
编码为UTF-8的html文件中,http://www.nowamagic.net/中文.rar -> 浏览器自动转换为 -> http://www.nowamagic.net/%E4%B8%AD%E6%96%87.rar
PHP中的URLEncode:
  1. //GB2312的Encode  
  2. echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+  
  3. echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.  
  4. echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20  
  5. echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.  
  6. ?>  
复制代码

除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。
urlencode和rawurlencode的区别:
  • urlencode 将空格则编码为加号(+)
  • rawurlencode 将空格则编码为加号(%20)
如果要使用UTF-8的Encode,有两种方法:
  • 将文件存为UTF-8文件,直接使用urlencode、rawurlencode即可。
  • 使用mb_convert_encoding函数。
  1. $url = 'http://www.nowamagic.net/中文.rar';  
  2. echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";  
  3. echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";  
  4. //http%3A%2F%2Fwww.nowamagic.net%2F%E4%B8%AD%E6%96%87.rar  
  5. ?>  
复制代码

实例:
  1. function parseurl($url="")  
  2. {  
  3.         $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8'));  
  4.         $a = array("%3A", "%2F", "%40");  
  5.         $b = array(":", "/", "@");  
  6.         $url = str_replace($a, $b, $url);  
  7.         return $url;  
  8. }  
  9. $url="ftp://ud03:password@www.nowamagic.net/中文/中文.rar";  
  10. echo parseurl($url);  
  11. //ftp://ud03:password@www.nowamagic.net/%D6%D0%CE%C4/%D6%D0%CE%C4.rar  
  12. ?>  
复制代码

JavaScript中的URLEncode: %E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20,encodeURI 不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn