ZetCode

PHP long2ip 函数

最后修改于 2025 年 4 月 4 日

PHP 的 long2ip 函数将长整型地址转换为点分四段格式的 IP 地址字符串。它对于网络编程至关重要。

基本定义

long2ip 将一个 32 位无符号长整型转换为 IPv4 地址字符串。该整数代表 IP 的打包二进制格式。

语法:long2ip(int $ip): string。以点分格式(例如,“192.168.1.1”)返回 IP 地址字符串。仅适用于 IPv4。

基本转换示例

此示例演示了将长整型转换为 IP 的最简单用法。

basic_conversion.php
<?php

declare(strict_types=1);

$longIP = 2130706433; // 127.0.0.1 in long format
$ipAddress = long2ip($longIP);

echo "Long: $longIP converts to IP: $ipAddress";

这会将整数 2130706433 转换为其 IP 表示形式 127.0.0.1。该函数会自动处理二进制到点分四段的转换。

转换数据库中存储的 IP

这展示了如何将数据库中以整数形式存储的 IP 转换为可读格式。

database_ip_conversion.php
<?php

declare(strict_types=1);

// Simulating IP stored as integer in database
$storedIP = 3232235521; // 192.168.0.1

$readableIP = long2ip($storedIP);
echo "Database value $storedIP represents IP: $readableIP";

许多数据库为了效率将 IP 存储为整数。检索时,此函数可将它们转换回人类可读的格式。该示例使用 192.168.0.1。

使用 ip2long 和 long2ip

此示例演示了 ip2long 和 long2ip 函数之间的关系。

ip_conversion_cycle.php
<?php

declare(strict_types=1);

$originalIP = "10.0.0.138";
$longIP = ip2long($originalIP);
$convertedIP = long2ip($longIP);

echo "Original: $originalIP\n";
echo "Long: $longIP\n";
echo "Converted back: $convertedIP";

这显示了 IP 到长整型再转换回 IP 的完整周期。正确使用时,这些函数是彼此的逆操作。请注意 32 位系统上可能存在的有符号整数问题。

处理网络地址

此示例转换存储为长整型的网络地址。

network_address_conversion.php
<?php

declare(strict_types=1);

$networkLong = 2886729728; // 172.16.0.0
$broadcastLong = 2886733823; // 172.16.0.255

echo "Network: " . long2ip($networkLong) . "\n";
echo "Broadcast: " . long2ip($broadcastLong);

网络编程通常使用整数形式的网络地址范围。此函数可将网络地址和广播地址转换为可读格式。对于子网计算非常有用。

处理无效输入的错误

此示例演示了 long2ip 如何处理无效输入值。

error_handling.php
<?php

declare(strict_types=1);

$invalidLong = -1; // Negative value
$largeLong = 4294967296; // Exceeds 32-bit

try {
    echo "Negative: " . long2ip($invalidLong) . "\n";
    echo "Large: " . long2ip($largeLong);
} catch (Throwable $e) {
    echo "Error: " . $e->getMessage();
}

由于 PHP 的整数处理方式,该函数对于超出 0-4294967295 范围的值会发生环绕。负值会产生意外结果而不是错误。

最佳实践

来源

PHP long2ip 文档

本教程通过在网络编程场景中进行 IP 地址转换的实际示例,介绍了 PHP 的 long2ip 函数。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来我一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 网络函数