□PHPでIPv6アドレスの補完
こんなやり方でいいんだろうか?
PECLの方にはライブラリがあるみたいだけど、ライブラリまでは要らないのでちょっと作りました。
<?
$IPADDR = ‘::123:F199’;
// ——————–
// ipv6addr complement
// ——————–
function ipv6complement($IPADDR)
{
// 先頭に::があったら、それは:に置換した上で、:で別ける
$IPARRAY = split(‘:’, preg_replace(‘/^::/’, ‘:’, $IPADDR));
// 補完しなければならない数を取得
$IPFOLLOW = 8 – count($IPARRAY);
// 補完後のIPアドレス表記を初期化
$IPCOMP = ”;
// 補完するアドレスをケツから生成
for ($IPNUM = count($IPARRAY)-1 ; $IPNUM >= 0; $IPNUM –)
{
// 文字があるなら
if (strlen($IPARRAY[$IPNUM]))
{
// そのまま連結
$IPCOMP = strval($IPARRAY[$IPNUM]).’:’.$IPCOMP;
}
// ないなら
else
{
// 補完しなければならない分だけ
for ($FNUM = $IPFOLLOW; $FNUM >= 0 ; $FNUM –)
{
// 0:を追加
$IPCOMP = ‘0:’.$IPCOMP;
}
}
}
// 最後の:を取っ払って
return preg_replace(‘/:$/’, ”, $IPCOMP);
}
print “もともとのIPアドレスは”.$IPADDR.”です\n”;
print “→補完後のIPアドレスは”.ipv6complement($IPADDR).”です\n”;
?>
ちゃんと動くからいいか。(^-^;