在 PHP 中,有类似于 MySQL INET_ATON() 和 INET_NTOA() 的函数来进行 IP 地址和长整型数字之间的转换。以下是对应的函数及其用法:

1. ip2long() – 将 IP 地址转换为长整型(类似 INET_ATON())

注意事项
  • 返回值:成功时返回长整型数字,失败时返回 false(需用 === false 判断)。
  • IPv6 支持:PHP 5.3.0+ 支持 IPv6,但需使用 inet_pton() 和 inet_ntop()。
  • 负数处理:在 32 位系统上,某些 IP 可能返回负数,需用 sprintf(‘%u’, $long) 转换为无符号数。

2. long2ip() – 将长整型转换为 IP 地址(类似 INET_NTOA())

3. IPv6 支持(PHP 5.3.0+)

使用 inet_pton() 和 inet_ntop() 处理 IPv4 和 IPv6:

示例:完整转换函数

兼容性说明

  • PHP 7.4+:推荐使用 inet_pton() 和 inet_ntop(),支持 IPv4 和 IPv6。
  • 32 位系统:ip2long() 可能返回负数,需用 sprintf(‘%u’, $long) 转换。
  • IPv6 兼容性:若需同时处理 IPv4 和 IPv6,建议使用 inet_pton() 和 inet_ntop()。