urlencode 函数和 rawurlencode 主要基于 RFC 1738。
然而,自 2005 年以来,当前用于 URI 标准的 RFC 是 RFC 3986。
以下是一个根据 RFC 3986 对 URL 进行编码的函数。
<?php
function myUrlEncode($string) {
$entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
$replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($entities, $replacements, urlencode($string));
}
?>