inet_ntop

関数の概要

inet_ntopは、PHPでバイナリ形式のIPアドレスを、読みやすい文字列形式(IPv4またはIPv6)に変換するための関数です。ネットワークプログラミングなどで、バイナリデータとして扱われるIPアドレスを、人間に理解しやすい形式に戻す際に使用します。

パラメータの説明

  • in(string): 変換したいバイナリ形式のIPアドレス。
    この値は通常、16バイト(IPv6)または4バイト(IPv4)のバイナリデータです。

戻り値

変換が成功した場合、IPv4形式またはIPv6形式のIPアドレス文字列を返します。失敗した場合は false を返します。

使用例

基本的な使い方(IPv4)

<?php
// バイナリ形式のIPv4アドレスを用意
$binaryIp = inet_pton('192.0.2.1');
$textIp = inet_ntop($binaryIp);
echo $textIp; // 結果: 192.0.2.1
?>

ここでは、まず inet_pton で文字列のIPアドレスをバイナリに変換し、それを inet_ntop で再び文字列に戻しています。実際の用途では、バイナリ形式で保存されたIPアドレスを文字列に変換する際に有効です。

IPv6アドレスの変換

<?php
$binaryIp6 = inet_pton('2001:0db8::1');
$textIp6 = inet_ntop($binaryIp6);
echo $textIp6; // 結果: 2001:db8::1
?>

IPv6のバイナリアドレスも同様に処理でき、読みやすい形式のIPv6アドレスに変換されます。

誤ったバイナリデータへの対応

<?php
$invalidBinary = "abcd"; // 不正なバイナリIP
$result = inet_ntop($invalidBinary);
if ($result === false) {
    echo "無効なバイナリIPアドレスです。";
}
?>

無効なバイナリ形式の場合は false が返るため、エラーハンドリングを行うことをおすすめします。

関連する関数

  • inet_pton: IPアドレスの文字列をバイナリ形式に変換する関数
  • ip2long: IPv4アドレスの文字列を符号付き整数(long型)に変換する関数
  • long2ip: 符号付き整数からIPv4アドレスの文字列に変換する関数

まとめ

inet_ntopはPHPでバイナリ形式のIPアドレスを文字列に変換する標準関数です。IPv4だけでなくIPv6にも対応しており、ネットワークプログラミングやデータベースから取得したバイナリIPを扱う場面で必要不可欠な関数です。使用時には変換失敗の可能性もあるため、戻り値の false チェックを忘れないようにしましょう。