如何利用PHP函数进行URL编码和解码?

1. 什么是URL编码和解码

在Internet上,URL是一种特殊的语言,称为“URL编码”或“百分比编码”。

URL编码是对URL中出现的非ASCII字符的一种方式。开头通常是“%”,后面紧跟着两个十六进制数,表示该字符的ASCII码值。

URL解码是对已经经过URL编码的URL再进行解码的过程。

2. PHP中的urlencode()和urldecode()函数

在PHP中,可以使用urlencode()函数对URL进行编码,使用urldecode()函数对URL进行解码。

//编码示例

$str = 'http://www.example.com/路径/文件名.php?id=123&name=张三';

echo urlencode($str); //输出:http%3A%2F%2Fwww.example.com%2F%E8%B7%AF%E5%BE%84%2F%E6%96%87%E4%BB%B6%E5%90%8D.php%3Fid%3D123%26name%3D%E5%BC%A0%E4%B8%89

//解码示例

$str1 = 'http%3A%2F%2Fwww.example.com%2F%E8%B7%AF%E5%BE%84%2F%E6%96%87%E4%BB%B6%E5%90%8D.php%3Fid%3D123%26name%3D%E5%BC%A0%E4%B8%89';

echo urldecode($str1); //输出:http://www.example.com/路径/文件名.php?id=123&name=张三

3. PHP中的rawurlencode()和rawurldecode()函数

PHP中的另外一对编码和解码函数是rawurlencode()和rawurldecode()。

与urlencode()和urldecode()函数不同的是,在rawurlencode()函数中,空格被编码为“%20”,而在urlencode()函数中,空格被编码为“+”。另外,在rawurlencode()函数中,所有非字母数字字符都会被编码。

同样的,在rawurldecode()函数中,所有被编码的字符都会被解码,即使它们不是字母数字字符。

//编码示例

$str = 'http://www.example.com/路径/文件名.php?id=123&name=张三';

echo rawurlencode($str); //输出:http%3A%2F%2Fwww.example.com%2F%E8%B7%AF%E5%BE%84%2F%E6%96%87%E4%BB%B6%E5%90%8D.php%3Fid%3D123%26name%3D%E5%BC%A0%E4%B8%89

//解码示例

$str1 = 'http%3A%2F%2Fwww.example.com%2F%u8DEF%u5F84%2F%u6587%u4EF6%u540D.php%3Fid%3D123%26name%3D%u5F20%u4E09';

echo rawurldecode($str1); //输出:http://www.example.com/路径/文件名.php?id=123&name=张三

4. 总结

以上是PHP中常用的进行URL编码和解码的函数及其使用方法。在实际的开发中,根据需要选择合适的函数进行编码和解码即可。

后端开发标签