对于想知道此函数名称含义的人
pton:将表示(可打印)格式的地址转换为网络地址
ntop:将网络地址转换为表示(可打印)格式的地址
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
inet_ntop — 将打包的网络地址转换为人类可读的表示形式
此函数将 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;
?>
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 函数兼容。