ip2long

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

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

說明

ip2long(string $ip_address): int

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

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

參數(shù)

ip_address

一個(gè)標(biāo)準(zhǔn)格式的地址。

返回值

返回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() 有時(shí)會(huì)返回即使這不是一個(gè)IPV4的標(biāo)準(zhǔn)地址的數(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地址

第二個(gè)例子說明打印一個(gè)轉(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
}
?>

注釋

注意:

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

注意:

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

參見

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