Network ip2long

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

ip2long — (IPv4) 인터넷 프로토콜 점으로 구분된 주소를 포함하는 문자열을 긴 정수로 변환합니다.


설명

ip2long(string $ip): int|false

ip2long() 함수는 인터넷 표준 형식(점으로 구분된 문자열) 표현에서 IPv4 인터넷 네트워크 주소의 긴 정수 표현을 생성합니다.

ip2long()은 불완전한 IP 주소에서도 작동합니다. 자세한 내용은 » http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm을 참조하세요.


매개변수

ip
표준 형식 주소입니다.

반환 값

긴 정수를 반환하거나 ip가 유효하지 않은 경우 false를 반환합니다.


Examples

예제 #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() 함수를 사용하여 변환된 주소를 인쇄하는 방법을 보여줍니다.

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

if ($long == -1 || $long === FALSE) {
    echo 'Invalid IP, please try again';
} else {
    echo $ip   . "\n";            // 192.0.34.166
    echo $long . "\n";            // 3221234342 (-1073732954 on 32-bit systems, due to integer overflow)
    printf("%u\n", ip2long($ip)); // 3221234342
}
?>
                  
                

메모

메모: PHP의 int 유형은 서명되어 있고 많은 IP 주소는 32비트 아키텍처에서 음의 정수가 되기 때문에 서명되지 않은 IP 주소의 문자열 표현을 얻으려면 sprintf() 또는 printf()의 "%u" 포맷터를 사용해야 합니다.

메모: ip2long()은 정수 값 오버플로로 인해 32비트 시스템에서 IP 255.255.255.255에 대해 -1을 반환합니다.


기타

  • long2ip() - 긴 정수 주소를 (IPv4) 인터넷 표준 점 형식의 문자열로 변환합니다.
  • sprintf() - 형식이 지정된 문자열 반환