PHP Conference Japan 2024

inet_ntop

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

inet_ntop将打包的网络地址转换为人类可读的表示形式

描述

inet_ntop(字符串 $ip): 字符串|false

此函数将 32 位 IPv4 或 128 位 IPv6 地址(如果 PHP 在构建时启用了 IPv6 支持)转换为地址族适用的字符串表示形式。

参数

ip

32 位 IPv4 或 128 位 IPv6 地址。

返回值

返回地址的字符串表示形式,或在失败时返回false

示例

示例 #1 inet_ntop() 示例

<?php
$packed
= chr(127) . chr(0) . chr(0) . chr(1);
$expanded = inet_ntop($packed);

/* 输出:127.0.0.1 */
echo $expanded;

$packed = str_repeat(chr(0), 15) . chr(1);
$expanded = inet_ntop($packed);

/* 输出:::1 */
echo $expanded;
?>

参见

  • long2ip() - 将长整数地址转换为 (IPv4) Internet 标准点分十进制格式的字符串
  • ip2long() - 将包含 (IPv4) Internet 协议点分十进制地址的字符串转换为长整数
  • inet_pton() - 将人类可读的 IP 地址转换为其打包的 in_addr 表示形式

添加注释

用户贡献的注释 2 条注释

52
ryansun81 at gmail dot com
14 年前
对于想知道此函数名称含义的人
pton:将表示(可打印)格式的地址转换为网络地址
ntop:将网络地址转换为表示(可打印)格式的地址
6
marcus at synchromedia dot co dot uk
9 年前
PHP 的 inet_ntop 函数与 MySQL 的 INET6_ATON 函数使用的二进制表示形式不兼容,假设您使用的是在 VARBINARY(16) 字段中存储 IPv4 和 IPv6 地址的推荐方法。您需要像这样转换它

/**
* 将 MySQL 二进制 v4(4 字节)或 v6(16 字节)IP 地址转换为可打印字符串。
* @param string $ip 包含 IP 地址的二进制字符串,由 MySQL 的 INET6_ATON 函数返回
* @return string 如果无效则为空。
*/
function inet6_ntop($ip) {
$l = strlen($ip);
if ($l == 4 or $l == 16) {
return inet_ntop(pack('A' . $l, $ip));
}
return '';
}

您不需要反向的函数,因为 MySQL 的 INET6_NTOA 已经与 PHP 的 inet_pton 函数兼容。
To Top