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 范围的值会发生环绕。负值会产生意外结果而不是错误。
最佳实践
- 验证: 验证输入是否在 0-4294967295 范围内
- 32 位系统: 注意有符号整数的限制
- IPv6: 对 IPv6 地址使用其他函数
- 类型安全: 确保输入是整数类型
来源
本教程通过在网络编程场景中进行 IP 地址转换的实际示例,介绍了 PHP 的 long2ip
函数。
作者
列出 所有 PHP 网络函数。