php 实现urlencode
URL编码的基本概念
URL编码(Percent-Encoding)是将特殊字符转换为百分号(%)后跟两位十六进制数的格式。PHP中通过urlencode()函数实现,常用于处理查询字符串或URL参数。
使用urlencode()函数
urlencode(string $str)函数对字符串进行URL编码,保留字母、数字和-_.字符不变,其他字符转换为%XX形式:
$original = "Hello World! 你好";
$encoded = urlencode($original);
echo $encoded;
// 输出:Hello+World%21+%E4%BD%A0%E5%A5%BD
与rawurlencode()的区别
rawurlencode()遵循RFC 3986标准,区别在于空格编码为%20而非+:
$str = "data 123";
echo urlencode($str); // 输出:data+123
echo rawurlencode($str); // 输出:data%20123
解码函数
使用urldecode()或rawurldecode()还原编码后的字符串:
$decoded = urldecode("Hello+World%21");
echo $decoded; // 输出:Hello World!
实际应用示例
构建带参数的URL时需编码查询部分:
$baseUrl = "https://example.com/search?q=";
$query = "php urlencode & decoding";
$fullUrl = $baseUrl . urlencode($query);
// 结果:https://example.com/search?q=php+urlencode+%26+decoding
注意事项
- 路径部分建议使用
rawurlencode() - 编码后的字符串长度可能显著增加
- 重复解码不会报错但可能产生非预期结果







