例如百度www.baidu.com 的ipv4是220.181.111.85,<br />将它转换成ipv6:<br />
<?php
function
getNormalizedIP(
$ip
) {
if
((
$ip
==
'0000:0000:0000:0000:0000:0000:0000:0001'
) OR (
$ip
==
'::1'
)) {
$ip
=
'127.0.0.1'
;
}
$ip
=
strtolower
(
$ip
);
if
((
$pos
=
strrpos
(
$ip
,
'%'
)) !== false) {
$ip
=
substr
(
$ip
, 0,
$pos
);
}
if
((
$pos
=
strrpos
(
$ip
,
'/'
)) !== false) {
$ip
=
substr
(
$ip
, 0,
$pos
);
}
$ip
= preg_replace(
"/[^0-9a-f:\.]+/si"
,
''
,
$ip
);
$is_ipv6
= (
strpos
(
$ip
,
':'
) !== false);
$is_ipv4
= (
strpos
(
$ip
,
'.'
) !== false);
if
((!
$is_ipv4
) AND (!
$is_ipv6
)) {
return
false;
}
if
(
$is_ipv6
AND
$is_ipv4
) {
$ip
=
substr
(
$ip
,
strrpos
(
$ip
,
':'
) + 1);
$is_ipv6
= false;
}
if
(
$is_ipv4
) {
$ip_parts
=
array_pad
(
explode
(
'.'
,
$ip
), 4, 0);
if
(
count
(
$ip_parts
) > 4) {
return
false;
}
for
(
$i
= 0;
$i
< 4; ++
$i
) {
if
(
$ip_parts
[
$i
] > 255) {
return
false;
}
}
$part7
=
base_convert
((
$ip_parts
[0] * 256) +
$ip_parts
[1], 10, 16);
$part8
=
base_convert
((
$ip_parts
[2] * 256) +
$ip_parts
[3], 10, 16);
$ip
=
'::ffff:'
.
$part7
.
':'
.
$part8
;
}
if
(
strpos
(
$ip
,
'::'
) !== false) {
$ip
=
str_replace
(
'::'
,
str_repeat
(
':0000'
, (8 - substr_count(
$ip
,
':'
))).
':'
,
$ip
);
}
if
(
strpos
(
$ip
,
':'
) === 0) {
$ip
=
'0000'
.
$ip
;
}
$ip_parts
=
explode
(
':'
,
$ip
);
foreach
(
$ip_parts
as
$key
=>
$num
) {
$ip_parts
[
$key
] = sprintf(
'%04s'
,
$num
);
}
$ip
= implode(
':'
,
$ip_parts
);
return
$ip
;
}
$myip
=
"220.181.111.85"
;
echo
'<b style="color:#00f">'
.getNormalizedIP(
$myip
).
'</b>'
;
?>