PHP中对于URL进行编码,可以使用 urlencode() 或者 rawurlencode(),二者的区别是前者把空格编码为 '+',而后者把空格编码为 '%20',不过应该注意的是,在编码时应该只对部分URL编码,否则URL中的冒号和反斜杠也会被转义。下面是详细解释:

1
string urlencode( string str)

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。

例子 1 :urlencode函数与rawurlencode函数区别

 
1
2
3
4
$str = '博 客' ;
echo  urlencode( $str );
echo  "<br>" ;
echo  rawurlencode( $str );

url结果:

1
2
%B2%A9+%BF%CD
%B2%A9%20%BF%CD

例子 2 :url中文编码方法
从url:"http://www.baidu.com/s?wd=博 客" 转为 url:"http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2";

1
2
3
4
$url
=
'http://www.baidu.com/s?wd=博 客'
;
$arr
=
explode
(
'='
,
$url
);
$url
=
$arr
[0].
'='
.rawurlencode(
$arr
[1]);
echo 
$url
;

结果:

http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2

或许用以下url编码函数

1
2
3
4
5
6
7
8
9
10
11
12
function 
cn_urlencode(
$url
){
     
$pregstr 

"/[\x{4e00}-\x{9fa5}]+/u"
;
//UTF-8中文正则
    
if
(preg_match_all(
$pregstr
,
$url
,
$matchArray
)){
//匹配中文,返回数组
        
foreach
(
$matchArray
[0] 
as 
$key
=>
$val
){
            
$url
=
str_replace
(
$val
, urlencode(
$val
), 
$url
);
//将转译替换中文
        
}
        
if
(
strpos
(
$url
,
' '
)){
//若存在空格
            
$url
=
str_replace
(
' '
,
'%20'
,
$url
);
        
}
    
}
    
return 
$url
;
}

url结果:

http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2

最新文章

  1. yii框架安装心得
  2. 一步一步学swift之:自己写Api接口-PHP
  3. 关于“服务器提交了协议冲突. Section=ResponseStatusLine&quot;问题
  4. 题目1096:日期差值(a-b=(a-c)-(b-c))
  5. SSH动态查询封装接口介绍
  6. UVA 12232 - Exclusive-OR(带权并查集)
  7. C预处理器和C库
  8. js递归遍历多维数组并在修改数组的key后返回新的多维数组
  9. Gulp压缩前端CS,JS,图片文件
  10. JS监听滚动条进度
  11. log4j - 使用教程说明
  12. Go vs Erlang - 转
  13. springmvc静态资源处理
  14. Linux split命令参数及用法详解---linux分割文件命令
  15. SpringMVC 源码分析
  16. MySQL5.7 并行复制配置
  17. markModified声明要修改的数组字段
  18. 后台程序获取JPG/GIF/PNG图片宽度、高度
  19. 设置 IE 默认模式为 IE8
  20. 解决64位debian下无法安装ia32库的问题

热门文章

  1. DSP连接不上CCS3.3的问题讨论
  2. 斯坦福大学IOS开发课程笔记(第七课第一部分)
  3. 找唯一不出现三次而出现1次的数子O(n)位运算算法
  4. DHTMLX系列组件的学习笔记
  5. ZOJ 3702 Fibonacci
  6. docker学习笔记2:容器操作
  7. Windows Azure 社区新闻综述(#78 版)
  8. BIRT使用2:安装、一般使用顺序
  9. NGUI 3.5教程(二)Label 标签 (Hello world)、多行文本
  10. SPOJ 11840. Sum of Squares with Segment Tree (线段树,区间更新)