找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 226|回复: 0

关于php的urlencode()和urldecode()URL编码函数浅析

[复制链接]

35

主题

26

回帖

645

积分

永久SVIP

国家级抬杠运动员

附加身份标识
精华
0
热心
2
听众
1
威望
38
贡献
163
违规
0
书币
4159
注册时间
2020-4-22

支持勋章

QQ
发表于 2020-4-24 02:59 | 显示全部楼层 |阅读模式
urlencode()函数是PHP中的一个内置函数,用于对url进行编码。下面本篇文章就来给大家介绍一些urlencode()函数的用法,让大家了解urlencode()函数是如何对url进行编码的,希望对大家有所帮助。

URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、Google等搜索引擎中输入中文查询时候,生成经过Encode过的网页URL。
URLEncode的方式一般有两种,一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),另一种是基于UTF-8的Encode(Google、Yahoo等使用)。

URLdecode:就是将url编码后的字符串还原成未编码的样子。


本工具分别实现两种方式的Encode与Decode:

中文 -> GB2312的Encode -> %D6%D0%CE%C4

中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87

Html中的URLEncode:

编码为GB2312的html文件中:http://downloads.cdsy.xyz/中文.rar -> 浏览器自动转换为 -> http://downloads.cdsy.xyz/%D6%D0%CE%C4.rar

注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了,我认为这应该算是Firefox一个bug。

编码为UTF-8的html文件中:http://downloads.cdsy.xyz/中文.rar -> 浏览器自动转换为 -> http://downloads.cdsy.xyz/%E4%B8%AD%E6%96%87.rar

PHP中的URLEncode:
代码如下:

[PHP] 纯文本查看 复制代码
<?php
//GB2312的Encode
echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+
echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.
echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20
echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.
?>


除了“-_.”之外的所有非字母数字字符都将被替换成百分号“%”后跟两位十六进制数。

urlencode和rawurlencode的区别:urlencode将空格编码为加号“+”,rawurlencode将空格编码为加号“%20”。

如果要使用UTF-8的Encode,有两种方法:

一、将文件存为UTF-8文件,直接使用urlencode、rawurlencode即可。

二、使用mb_convert_encoding函数:
代码如下:

[PHP] 纯文本查看 复制代码
<?php
$url = 'http://downloads.cdsy.xyz/中文.rar';
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
//http%3A%2F%2Fdownloads.cdsy.xyz%2F%E4%B8%AD%E6%96%87.rar
?>


实例:
代码如下:

[PHP] 纯文本查看 复制代码
<?php
function parseurl($url="")
{
$url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8'));
$a = array("%3A", "%2F", "%40");
$b = array(":", "/", "@");
$url = str_replace($a, $b, $url);
return $url;
}
$url="ftp://userone:passwordone@downloads.cdsy.xyz/中文/中文.rar";
echo parseurl($url);
//ftp://userone:passwordone@downloads.cdsy.xyz/%D6%D0%CE%C4/%D6%D0%CE%C4.rar
?>


JavaScript中的URLEncode:

如:%E4%B8%AD%E6%96%87-_.%20    %E4%B8%AD%E6%96%87-_.%20

encodeURI不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。

如:http://downloads.cdsy.xyz/%E4%B8%AD%E6%96%87.rar    http%3A%2F%2Fdownloads.cdsy.xyz%2F%E4%B8%AD%E6%96%87.rar

相关帖子

每次见你穿短裤打领带,还穿个拖鞋,下次再这样穿不要从我家门口过了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2024-11-22 00:00 , Processed in 0.066149 second(s), 31 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2023, Tencent Cloud.

快速回复 返回顶部 返回列表