IPv6アドレスを完全表記(省略されていない表記)に変換するPHPコード

IPv6アドレスは通常、128bitをコロンで16bitずつのグループに区切り、各グループを4桁の16進数(アルファベットは小文字)で表記します。往々にして様々な省略表記法が用いられ、できるだけ短く表記されることがありますが、IPv6アドレスをプログラムで扱うときには完全表記に変換したいこともあるかと思います。このページは、私が使用しているIPv6アドレスを完全表記(省略されていない表記)に変換するPHPコードのメモ書きです。

もくじ

  • IPv6アドレスを完全表記(省略されていない表記)に変換するPHPコード
  • 行う処理についての解説

IPv6アドレスを完全表記(省略されていない表記)に変換するPHPコード

コードと仕様は以下のようになります。

  • 関数名:ipv6complete_notation
  • パラメータ:IPv6アドレス
  • 返り値:処理に成功したら完全表記のIPv6アドレス 失敗した場合はfalse

行う処理についての解説

一番最初のif文は、関数に渡されたパラメータがIPv6アドレスであるか否かを判定するためのものです(PHP: filter_var – Manualも参照のこと)。もしIPv6アドレスでないパラメータが渡されていたら、その後の処理を行わずにfalseを返します。

渡されたパラメータがIPv6アドレスであることが確かめられたら、inet_pton関数でIPv6アドレスを一旦バイナリデータに変換します。その後、bin2hex関数を用いてバイナリデータを16進数表記の文字列に変換します。ここまでできれば、後は16bit(4文字)ずつコロンで区切るだけです。

幸いPHPにはwordwrapという文字列を区切っていく関数があるので、これを使って文字列をコロンで区切ればIPv6アドレスの完全表記が完成です。後はもう一度filter_varを通してIPv6アドレスの形になっていることを確かめ、完全表記になったIPv6アドレスを返して処理終了です。

参考リンク

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

Bitcoin:

Monacoin:

Litecoin: