见下面实现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.
}