php中urlencode()和rawurlencode()函数的区别

2013 年 7 月 22 日3530

今天在阅读开源代码时发现了一个URL的编码函数:rawurlencode(),以前一直没有注意过,因为在平时的开发上主要使用的是 urlencode(),故专门研究了一番。

其实这两个函数的区别很简单,它们两个都会把URL中的非英文字符进行转义,替换成”%”后跟两位十六进制数,不同的是:rawurlencode 遵守是94年国际标准备忘录RFC 1738,对空格的转义是’%20′;而urlencode的编码实现的是传统做法,和POST表单数据一样会把空格转义成”+”号。

举个例子:

如果URL地址源的形式是:http://http://www.zjjv.com///PHP 编码区别

<?php

$url = 'http://http://www.zjjv.com///php 编码区别';

var_dump(urlencode($url));

echo '<br>-----------<br>';

var_dump(rawurlencode($url)) ;

?>

以上输出的结果是:

string(66) “http%3A%2F%2Fhttp://www.zjjv.com/%2Fphp+%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB”

———–

string(68) “http%3A%2F%2Fhttp://www.zjjv.com/%2Fphp%20%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB”

从这个例子中可以很明显的看出二者的区别,如果我们想给编码的URL解码的话,可以使用这两个函 数:rawurldecode(),urldecode() 。在实际的开发中为了避免URL格式不统一,还是推荐大家使用rawurlencode()来进行URL的编码。

0 0