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) 網際網路標準點分十進位格式的字串
  • ip2long() - 將包含 (IPv4) 網際網路協定點分十進位位址的字串轉換為長整數
  • inet_pton() - 將人類可讀的 IP 位址轉換為其壓縮的 in_addr 表示法

新增註釋

使用者貢獻的註釋 2 則註釋

ryansun81 at gmail dot com
14 年前
對於想知道這個函數名稱含義的人
pton:將呈現(可列印)格式的位址轉換為網路位址
ntop:將網路位址轉換為呈現(可列印)格式的位址
marcus at synchromedia dot co dot uk
9 年前
PHP 的 inet_ntop 函數與 MySQL 的 INET6_ATON 函數使用的二進位表示法不相容,假設您使用建議的方法將 IPv4 和 IPv6 位址儲存在 VARBINARY(16) 欄位中。您需要像這樣轉換它

/**
* 將 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