Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie das PHP-IPv6-Format

So konvertieren Sie das PHP-IPv6-Format

藏色散人
藏色散人Original
2021-07-19 09:45:462948Durchsuche

php-IPv6-Formatkonvertierungsmethode: Erstellen Sie zunächst eine PHP-Beispieldatei.

So konvertieren Sie das PHP-IPv6-Format

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn