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编码和解码的函数及其使用方法。在实际的开发中,根据需要选择合适的函数进行编码和解码即可。