`
化蝶自在飞
  • 浏览: 2333387 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

php urlencode()函数详解

阅读更多
理解URLEncode:
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://ud03.kinoko.name/中文.rar -> 浏览器自动转换为 -> http://ud03.kinoko.name/%D6%D0%CE%C4.rar
注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.

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

PHP中的URLEncode:

<?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
$url = 'http://ud03.kinoko.name/中文.rar';
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
//http%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
?>


实例:

<?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://ud03:password@ud03.kinoko.name/中文/中文.rar";
echo parseurl($url);
//ftp://ud03:password@ud03.kinoko.name/%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://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
分享到:
评论
2 楼 fff 2010-07-27  
<?php
function parseurl($url="",$input_charset,$output_charset)  
{  
$url = rawurlencode(mb_convert_encoding($url, $input_charset, $output_charset));  
$entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
$replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
$url = str_replace($entities, $replacements, $url);  
return $url;  
} 
>
1 楼 fff 2010-07-27  
function parseurl($url="",$input_charset,$output_charset)  
{  
$url = rawurlencode(mb_convert_encoding($url, $input_charset, $output_charset));  
$entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
$replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
$url = str_replace($entities, $replacements, $url);  
return $url;  
}  


处理的更完整一点的

相关推荐

    php urlencode()与urldecode()函数字符编码原理详解

    PHP作为广泛使用的服务器端脚本语言,提供了两个非常重要的函数:urlencode() 和 urldecode(),用于处理URL中的非ASCII字符以及避免URL中的特殊字符带来的问题。 ### urlencode() 函数 urlencode() 函数的主要作用...

    PHP内置加密函数详解

    URL编码通过urlencode()和rawurlencode()函数实现,其目的是将字符串编码成适合在URL中传输的格式。urlencode()会将非字母数字字符转换成百分号(%)后跟两位十六进制数的形式,而空格会被编码成加号(+)。rawurlencode...

    PHP json_encode() 函数详解及中文乱码问题

    具体来说,在PHP代码中,可以在调用json_encode()之前,对包含中文的数组使用urlencode()函数进行编码。例如,有一个数组如下: ```php $arr = array('Name' =&gt; '希亚', 'Age' =&gt; '20'); ``` 可以直接用json_...

    深入详解PHP

    **深入详解PHP** PHP,全称“PHP:Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,尤其在Web开发领域应用广泛。本教程将深入探讨PHP的核心概念、语法特性以及安全实践,帮助读者从入门到精通,全面理解...

    PHP常用库函数详解

    **PHP常用库函数详解** PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域。它的库函数丰富多样,为开发者提供了强大的功能支持。本篇文章将详细解析一些PHP中的常用库函数,包括它们...

    PHP4手册:函数库及函数(四十二) URL 处理函式库

    #### 二、函数详解 ##### 1. `parse_url` **功能说明**:`parse_url`函数用于解析URL并返回一个包含各个组成部分的关联数组。这些组成部分包括scheme(协议)、host(主机名)、port(端口号)、user(用户名)、...

    2016阿里校招PHP笔试 完整截图

    【阿里校招PHP笔试知识点详解】 2015年8月,阿里巴巴集团开启了一轮针对应届毕业生的PHP岗位校招笔试。这场笔试旨在考察应聘者的PHP基础能力、编程技巧以及问题解决能力。以下是对可能涉及的PHP相关知识点的详细...

    php-Unicode-0.1.3.rar_unicode block php

    《PHP处理Unicode字符与编码详解》 在编程领域,尤其是Web开发中,PHP是一种广泛使用的脚本语言。当涉及到国际化(i18n)和本地化(l10n)时,正确处理Unicode字符和编码至关重要。...

    探讨PHP JSON中文乱码的解决方法详解

    其次,对于那些无法统一编码的情况,可以使用PHP的urlencode函数和JavaScript的decodeURI()函数来处理。具体操作是在PHP端将要通过json_encode转换的数据用urlencode函数进行URL编码,在客户端通过decodeURI()函数对...

    基于PHP的UrlWorker网址工匠(网址缩短程序)php版源码.zip

    PHP提供了`urlencode()`和`urldecode()`函数来完成这个任务。编码可以避免URL中包含的空格和其他特殊字符导致的问题,而解码则用于恢复原始URL。 2. **数据库存储**:为了保存和查找缩短的URL,我们需要一个数据库...

    php网络开发完全手册

    11.4.1 编码字符串——urlencode 181 11.4.2 解码字符串——urldecode 181 11.5 小结 182 第12章 PHP与JavaScript交互 183 12.1 JavaScript简介 183 12.2 JavaScript的数据类型 183 12.3 JavaScript程序设计基础 184...

    PHP4 编程与实例(十分实用的资源)

    PHP4拥有大量的内置函数,如日期和时间处理的`date()`、邮件发送的`mail()`、URL编码解码的`urlencode()`和`urldecode()`等,它们为日常编程提供了便利。 通过深入学习这些知识点,并结合提供的实例,你可以逐步...

    必须收藏的23个php实用代码片段

    【PHP实用代码片段详解】 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适合于Web开发。在编程过程中,拥有实用的代码片段能够显著提高开发效率。以下是一些精选的PHP代码片段,涵盖了发送短信...

    基于PHP的迅雷、快车、旋风URL加解密工具php版源码.zip

    2. URL编码与解码:在处理URL时,需要了解URL编码(如`urlencode()`和`urldecode()`函数)的概念,以确保URL中的特殊字符被正确处理。在加解密过程中,可能需要对URL进行编码和解码,以保证其在传输过程中的正确性和...

    php面试资料 很好的学习资料

    【PHP面试知识点详解】 在PHP领域,面试是一个评估求职者技能和知识的关键环节。这份"php面试资料"包含了培训老师多年经验积累的经典面试题目,旨在帮助开发者深入理解PHP的核心概念和实际应用。以下是对其中一些...

    10个非常实用的PHP代码片段

    【PHP代码片段详解】 在PHP开发中,代码片段可以极大地提高开发效率,简化常见的编程任务。以下是10个非常实用的PHP代码示例,涵盖了不同的功能,帮助开发者更有效地完成项目。 1. **使用Textmagic API发送短信** ...

    PHP笔试题目汇总 提高您的面试成功率

    【PHP笔试题目详解】 在PHP面试过程中,掌握常见的笔试题目的解答技巧是提高成功应聘PHP职位的关键。以下是对提供的部分PHP笔试题目的详细解析: 1. `echo count("abc");` 输出什么? 答: 这行代码会输出1,因为`...

    php实习报告范文.doc

    【PHP实习报告要点详解】 1. **页面间变量传递**: 在PHP最新版本中,自动全局变量默认关闭。要获取GET、POST或SESSION中的变量,需使用`$_GET['foo']`、`$_POST['foo']`和`$_SESSION['foo']`。尽管可以修改配置...

Global site tag (gtag.js) - Google Analytics