將 IPV4 的字串網際網路協議轉換成長整型數字

ip2long

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

ip2long將 IPV4 的字串網際網路協議轉換成長整型數字

說明

ip2long(string $ip_address): int

函式 ip2long() 返回 IPV4 網路地址的長整型格式,從標準網路地址格式(點字串)轉化得到。

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

參數

ip_address

一個標準格式的地址。

返回值

返回IP地址轉換后的數字 或 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的標準地址的數字地址。

範例

示例 #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地址

第二個例子說明列印一個轉換后的地址使用 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位系統的情況下為負數, 你需要使用 "%u" 進行轉換通過 sprintf()printf() 得到的字串來表示無符號的IP地址。

注意:

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

參見

  • long2ip() - 將長整型轉化為字串形式帶點的網際網路標準格式地址(IPV4)
  • sprintf() - 返回格式化字串

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *