见下面实现urlencode和urldecode的代码,同理可实现多种特殊编码方式。

function my_urldecode($s) {

02.
$l = strlen($s);
03.
$i = 0;
04.
$res = '';
05.
while ($i < $l) {
06.
if ($s[$i] == '+') {
07.
$res .= ' ';
08.
$i++;
09.
} elseif ($s[$i] == '%') {
10.
$res .= chr(hexdec($s[$i+1].$s[$i+2]));
11.
$i += 3;
12.
} else {
13.
$res .= $s[$i];
14.
$i++;
15.
}
16.
}
17.
 
18.
return $res;
19.
}
01.
function my_urlencode($s) {
02.
$l = strlen($s);
03.
$res = '';
04.
for ($i = 0; $i < $l;$i++) {
05.
$ascii = ord($s[$i]);
06.
if ($s[$i] == ' ') {
07.
$res .= '+';
08.
} elseif (($ascii == 45 || $ascii == 46) || ($ascii >= 48 && $ascii <= 57) || ($ascii >= 65 && $ascii <= 90) || ($ascii >= 97 && $ascii <= 122)) {
09.
$res .= $s[$i];
10.
} else {
11.
$res .= '%' . strtoupper(dechex($ascii));
12.
}
13.
}
14.
return $res;
15.
}