PHP ip2long() Funktion: Alles, was Sie wissen müssen
Als PHP-Entwickler müssen Sie möglicherweise eine IP-Adresse vom menschenlesbaren Format in eine lange Ganzzahl umwandeln. ip2long() ist eine eingebaute PHP-Funktion.
Als PHP-Entwickler müssen Sie möglicherweise eine IP-Adresse von einem menschenlesbaren Format in eine lange Ganzzahl umwandeln. Die ip2long()-Funktion ist eine eingebaute PHP-Funktion, die diese Konvertierung durchführt. Dieser Artikel behandelt ihre Syntax, Verwendung und wichtige Besonderheiten.
Was ist die ip2long()-Funktion?
Die ip2long()-Funktion wandelt einen standardmäßigen IPv4-Adress-String (Punktschreibweise, wie 192.168.0.1) in die entsprechende 32-Bit-Ganzzahl um.
Eine IPv4-Adresse besteht aus vier Bytes. ip2long() packt diese vier Bytes in eine einzelne Zahl: Das erste Oktett wird zum höchstwertigen Byte, das letzte Oktett zum niedrigstwertigen. So wird 127.0.0.1 zu 127 × 256³ + 0 × 256² + 0 × 256 + 1 = 2130706433.
Warum eine IP-Adresse in eine Ganzzahl umwandeln?
Das Speichern von IP-Adressen als Ganzzahlen statt als Strings hat echte Vorteile:
- Kleinerer Speicherbedarf: Eine
INT UNSIGNED-Spalte belegt 4 Bytes gegenüber bis zu 15 Zeichen für die String-Form. - Schnellere Vergleiche und Bereichsabfragen: Die Überprüfung, ob eine IP innerhalb eines CIDR-Bereichs liegt, wird zu einfacher Ganzzahl-Arithmetik (
WHERE ip BETWEEN :start AND :end). - Indizierung: Ganzzahl-Indizes sind kompakter und schneller als String-Indizes.
Wenn Sie die Adresse nur anzeigen müssen, behalten Sie sie als String. Die Ganzzahl-Form lohnt sich, wenn Sie viele Adressen speichern, sortieren oder bereichsweise abgleichen.
Wie verwendet man die ip2long()-Funktion?
Die Verwendung der ip2long()-Funktion ist unkompliziert. Hier ist die Syntax:
Die PHP-Syntax der ip2long()-Funktion
ip2long($ip_address);Die Funktion nimmt einen Parameter entgegen:
$ip_address: Die IP-Adresse, die in eine lange Ganzzahl umgewandelt werden soll.
Hier ist ein Beispiel zur Verwendung der ip2long()-Funktion mit ordnungsgemäßer Validierung und vorzeichenloser Formatierung:
Wie verwendet man die ip2long()-Funktion?
In diesem Beispiel konvertieren wir die IP-Adresse "127.0.0.1" in eine lange Ganzzahl. Wir prüfen, ob das Ergebnis false ist (was auf ungültige Eingaben hinweist), und verwenden sprintf('%u', ...), um den Wert als vorzeichenlose Ganzzahl auszugeben.
Rückkonvertierung: ip2long() und long2ip()
ip2long() hat eine Spiegelfunktion, long2ip(), die die Ganzzahl wieder in einen Punkt-String umwandelt. Zusammen ermöglichen sie eine saubere Hin- und Rückkonvertierung:
<?php
$ip = "192.168.1.1";
$int = ip2long($ip); // signed 32-bit value
$stored = sprintf('%u', $int); // unsigned string for storage: 3232235777
echo $stored . "\n"; // 3232235777
echo long2ip($int) . "\n"; // 192.168.1.1Beachten Sie, dass long2ip() den von ip2long() zurückgegebenen vorzeichenbehafteten Wert direkt akzeptiert, sodass Sie die vorzeichenlose Form nicht vor dem Aufruf zurückkonvertieren müssen.
Wichtige Hinweise
- Vorzeichenlose Ausgabe:
ip2long()gibt eine vorzeichenbehaftete 32-Bit-Ganzzahl zurück. Bei IP-Adressen im oberen Bereich (z. B.192.168.1.1) kann eine negative Zahl zurückgegeben werden. Verwenden Sie immersprintf('%u', ip2long($ip))beim Speichern oder Anzeigen des Ergebnisses. - IPv6-Unterstützung:
ip2long()unterstützt nur IPv4-Adressen. Für IPv6 verwenden Sie stattdessen dieinet_pton()-Funktion.
Fazit
Die ip2long()-Funktion bietet eine unkomplizierte Möglichkeit, IPv4-Adressen für die Speicherung oder den Vergleich in Ganzzahlen umzuwandeln. Denken Sie daran, den Rückgabewert zu validieren und sprintf('%u', ...) für eine konsistente vorzeichenlose Ausgabe zu verwenden. Wir hoffen, dass diese Anleitung Ihnen hilft, die IP-Adresskonvertierung effektiv in Ihren PHP-Anwendungen zu implementieren.