IPv6アドレスを完全表記(省略されていない表記)に変換するPHPコード
投稿日:2018年01月12日
最終更新日:
もくじ
- 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アドレスを返して処理終了です。
参考リンク