long2ip

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

long2ipConvierte un entero largo (IPv4) a su notación decimal con puntos

Descripción

long2ip(int $ip): string

La función long2ip() genera una dirección Internet en notación decimal con puntos (formato aaa.bbb.ccc.ddd) a partir de su representación como entero largo.

Parámetros

ip

Una representación adecuada de una dirección en forma de entero largo

Valores devueltos

Devuelve la dirección IP Internet, en forma de string.

Historial de cambios

Versión Descripción
8.4.0 El tipo de retorno se cambió de string|false a string.
7.1.0 El tipo del argumento ip fue modificado de string a int.

Notas

Nota:

En arquitecturas de 32 bits, convertir la representación de direcciones IP de string a int no dará resultados correctos para los números que exceden PHP_INT_MAX.

Ver también

  • ip2long() - Convierte una cadena que contiene una dirección (IPv4) en notación decimal con puntos en una dirección entera larga

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
6 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