W3docs

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?

php— editable, runs on the server

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.1

Beachten 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 immer sprintf('%u', ip2long($ip)) beim Speichern oder Anzeigen des Ergebnisses.
  • IPv6-Unterstützung: ip2long() unterstützt nur IPv4-Adressen. Für IPv6 verwenden Sie stattdessen die inet_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.

Practice

Übung
Was macht die PHP-Funktion 'ip2long'?
Was macht die PHP-Funktion 'ip2long'?
Was this page helpful?