ip2long

(PHP 4, PHP 5, PHP 7, PHP 8)

ip2long將 IPV4 的字符串互聯(lián)網(wǎng)協(xié)議轉(zhuǎn)換成長整型數(shù)字

說明

ip2long(string $ip_address): int

函數(shù) ip2long() 返回 IPV4 網(wǎng)絡(luò)地址的長整型格式,從標準網(wǎng)絡(luò)地址格式(點字符串)轉(zhuǎn)化得到。

ip2long() 還可以與非完整IP進行工作。 閱讀 ? http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm 獲得更多信息。

參數(shù)

ip_address

一個標準格式的地址。

返回值

返回IP地址轉(zhuǎn)換后的數(shù)字 或 false 如果 ip_address 是無效的。

更新日志

版本 說明
5.5.0 Prior to this version, on Windows ip2long() would sometimes return a valid number even if passed a value which was not an (IPv4) Internet Protocol dotted address.
5.2.10 再此之前的版本, ip2long() 有時會返回即使這不是一個IPV4的標準地址的數(shù)字地址。

范例

示例 #1 ip2long() 例子

<?php
$ip 
gethostbyname('www.example.com');
$out "The following URLs are equivalent:<br />\n";
$out .= 'http://www.example.com/, http://' $ip '/, and http://' sprintf("%u"ip2long($ip)) . "/<br />\n";
echo 
$out;
?>

示例 #2 顯示IP地址

第二個例子說明打印一個轉(zhuǎn)換后的地址使用 printf() 在PHP4和PHP5的功能:

<?php
$ip   
gethostbyname('www.example.com');
$long ip2long($ip);

if (
$long == -|| $long === FALSE) {
    echo 
'Invalid IP, please try again';
} else {
    echo 
$ip   "\n";           // 192.0.34.166
    
echo $long "\n";           // -1073732954
    
printf("%u\n"ip2long($ip)); // 3221234342
}
?>

注釋

注意:

因為PHP的 integer 類型是有符號,并且有許多的IP地址講導致在32位系統(tǒng)的情況下為負數(shù), 你需要使用 "%u" 進行轉(zhuǎn)換通過 sprintf()printf() 得到的字符串來表示無符號的IP地址。

注意:

ip2long() 將返回 false 在IP是 255.255.255.255 的情況,版本為 PHP 5 <= 5.0.2. 在修復后 PHP 5.0.3 會返回 -1 (與PHP4相同).

參見

  • long2ip() - 將長整型轉(zhuǎn)化為字符串形式帶點的互聯(lián)網(wǎng)標準格式地址(IPV4)
  • sprintf() - 返回格式化字符串