Heim > Artikel > Backend-Entwicklung > So konvertieren Sie das PHP-IPv6-Format
php-IPv6-Formatkonvertierungsmethode: Erstellen Sie zunächst eine PHP-Beispieldatei.
Die Betriebsumgebung dieses Artikels: Windows7-System, PHP7.1-Version, DELL G3-Computer
Wie konvertiert man das PHP-IPv6-Format?
IP in PHP in Nummer (IPv6) umwandeln
IP-Adresse von ivp6 in Nummer umwandeln und in der Datenbank speichern
IPv6 in Nummer (positive Ganzzahl) umwandeln:
Für IP-Adressen im IPv6-Format können wir sie nicht verwenden Die Funktion ip2long() kann direkt konvertiert werden. Wir können die Konvertierung nur über andere Methoden durchführen. Nachfolgend veröffentlichen wir, was Netizen Weissner im PHP-Handbuch hinterlassen hat (http://php.net/manual/zh/function.ip2long.php#94477). Hier ist die Lösung. Zuvor muss jeder darauf achten, dass das Kommentarsymbol „;“ vor extension=php_gmp.dll in der Datei php.ini entfernt wird, da die Funktion in der Erweiterung verwendet wird der Code. .
Der Code zum Konvertieren von IPv6 in Zahlen lautet wie folgt:
$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
Wie Sie sehen können, gibt es nach der Konvertierung der IPv6-Adresse in Zahlen 38 Zahlen, und der Bigint in der Datenbank kann nicht gespeichert werden, sodass Sie ihn trotzdem speichern müssen Konvertieren Sie die Felder in der Datenbank. Typkonvertierung in den Typ char oder varchar.
Anbei ist der Code, um festzustellen, ob die IP ivp4 oder ipv6 ist, und um die IP in ein digitales Format umzuwandeln:
$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; }
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie das PHP-IPv6-Format. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!