php ipv6 형식 변환 방법: 먼저 PHP 샘플 파일을 만든 다음 "$ipv6"을 정의하고 마지막으로 "gmp_strval(gmp_init($ipv6long,2),10)"을 사용하여 ipv6을 숫자로 변환합니다.
이 기사의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터
php ipv6 형식을 변환하는 방법은 무엇입니까?
PHP에서 IP를 숫자(ipv6)로 변환
ivp6 IP 주소를 숫자로 변환하고 데이터베이스에 저장하세요.
ipv6를 숫자(양의 정수)로 변환:
ipv6 형식의 IP 주소에는 사용할 수 없습니다. ip2long() 함수를 사용하여 직접 변환할 수 있지만 다른 방법을 통해서만 변환할 수 있습니다. 아래에서는 네티즌 Weissner가 PHP 매뉴얼(http://php.net/manual/zh/function.ip2long.php#94477)에 남긴 내용을 게시하겠습니다. 그 전에, 확장 기능의 함수가 php.ini 파일에서 사용되기 때문에, Extension=php_gmp.dll 앞의 주석 기호 ';'를 제거해야 한다는 사실에 모두가 주의해야 합니다. 코드. .
ipv6를 숫자로 변환하는 코드는 다음과 같습니다.
$ipv6 = 'FEDC:BA98:7654:3210:FEDC:BA98:7654:3210'; $ip_n = inet_pton($ipv6); $bits = 15; // 16 x 8 bit = 128bit $ipv6long=''; while ($bits >= 0) { $bin = sprintf("%08b",(ord($ip_n[$bits]))); $ipv6long = $bin.$ipv6long; $bits--; } echo gmp_strval(gmp_init($ipv6long,2),10); // 结果为:338770000845734292534325025077361652240
보시다시피 ipv6 주소를 숫자로 변환하면 38개의 숫자가 있고 데이터베이스의 bigint는 저장할 수 없으므로 여전히 변환해야 합니다. 데이터베이스 유형의 필드를 char 또는 varchar 유형으로 변환합니다.
첨부된 코드는 IP가 ivp4인지 ipv6인지 확인하고 IP를 디지털 형식으로 변환하는 코드입니다.
$ip = '192.168.101.100'; //$ip = 'FEDC:BA98:7654:3210:FEDC:BA98:7654:3210'; if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { echo sprintf('%u',ip2long($ip));exit; } else if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { $ip_n = inet_pton($ip); $bits = 15; // 16 x 8 bit = 128bit $ipv6long=''; while ($bits >= 0) { $bin = sprintf("%08b",(ord($ip_n[$bits]))); $ipv6long = $bin.$ipv6long; $bits--; } echo gmp_strval(gmp_init($ipv6long,2),10);exit; }
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP ipv6 형식을 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!