PHP 8.5.0 Released!

long2ip

(PHP 4, PHP 5, PHP 7, PHP 8)

long2ip長整数表現のインターネットアドレスを (IPv4) インターネット標準ドット表記に変換する

説明

long2ip(int $ip): string

関数long2ip() は、長整数表現のアドレスからドット表記 (例:aaa.bbb.ccc.ddd)のインターネットアドレスを生成します。

パラメータ

ip

長整数で表した、正しい形式のアドレス。

戻り値

インターネットの IP アドレスを string として返します。

変更履歴

バージョン 説明
8.4.0 戻り値の型が、string|false から string に変更されました。
7.1.0 ip の型が string から int に変更されました。

注意

注意:

32ビットアーキテクチャでは、IPアドレスの整数表現を string から int にキャストしても PHP_INT_MAX を超える数値については正しい結果を得られません。

参考

  • ip2long() - ドット表記の (IPv4) IP アドレスを、長整数表現に変換する

add a note

User Contributed Notes 2 notes

up
10
Gabriel Malca
19 years ago
If the function doesn't exist:

<?
    if (!function_exists("long2ip")) {
        function long2ip($long) {
            // Valid range: 0.0.0.0 -> 255.255.255.255
            if ($long < 0 || $long > 4294967295) return false;
            $ip = "";
            for ($i=3;$i>=0;$i--) {
                $ip .= (int)($long / pow(256,$i));
                $long -= (int)($long / pow(256,$i))*pow(256,$i);
                if ($i>0) $ip .= ".";
            }
            return $ip;
        }
    }
?>
up
5
steve at computurn dot com
7 years ago
For a 32bit safe long2ip, which can accept string or signed integer input, try:

  function safelong2ip($long) {
    $binStr = sprintf("%032s", decbin((float)$long));
    if (strlen($binStr) != 32) {
      throw new Exception("Invalid IPv4 subnet!");
    }

    $ipArr = [];
    for ($i = 0; $i < 4; ++$i) {
      $ipArr[] = bindec(substr($binStr, $i*8, 8));
    }

    return implode('.', $ipArr);
  }
To Top