inet_pton

関数の概要

inet_pton 関数は、IPv4またはIPv6のIPアドレスをテキスト形式(例:”192.168.1.1″ や “2001:db8::1″)からバイナリ形式に変換します。この関数はネットワーク通信で使われるIPアドレスを内部処理に適した形に変換する際に非常に便利です。

パラメータの説明

  • ip_address (string): 変換したいIPアドレスの文字列。IPv4形式またはIPv6形式に対応しています。

戻り値

成功した場合、IPアドレスのバイナリ表現(ネットワークバイトオーダーの2進数文字列)を返します。失敗した場合は false を返します。変換後のバイナリデータはソケットプログラミングなどに使えます。

使用例

基本的な使い方(IPv4)

<?php
$ip = "192.168.1.1";
$binary = inet_pton($ip);
var_dump($binary);
?>

この例では、IPv4の文字列をバイナリ形式に変換し、var_dumpで内容を表示しています。

IPv6アドレスの変換例

<?php
$ip6 = "2001:0db8:85a3::8a2e:0370:7334";
$binary6 = inet_pton($ip6);
var_dump($binary6);
?>

IPv6形式のIPも同様に変換可能で、長いIPアドレスも正しくバイナリに変換されます。

不正なIPアドレスを渡した場合の例

<?php
$invalid_ip = "999.999.999.999";
$result = inet_pton($invalid_ip);
if ($result === false) {
    echo "IPアドレスが不正です。";
}
?>

不正なIPアドレスを渡すと false が返り、エラーハンドリングが可能です。

関連する関数

  • inet_ntop: バイナリ形式のIPアドレスをテキスト形式に戻す関数
  • ip2long: IPv4のみを整数に変換する関数(ただし inet_pton ほど汎用的ではありません)
  • long2ip: 整数からIPv4文字列に戻す関数

まとめ

inet_pton はIPv4・IPv6両方のIPアドレスをテキスト形式からバイナリ形式に変換できる便利な関数です。ネットワークプログラミングやIPアドレスの比較・保存の際に役立ちます。エラー時は false を返すため、入力の妥当性チェックも簡単に行えます。実務でIP処理を行う際にはぜひ活用したい関数です。