![]() |
[PHP] IPv6 in einzelne Bytes zerlegen
Hi,
wie kann ich eine IPv6 in ihre einzelnen Bytes zerlegen und diese in einem Array speichern? Beispiel IPv4:
Code:
Das ergibt bei ner IP von 192.168.0.10 folgendes Array:
$user['iparr'] = explode('.', $user['origip']);
Code:
So ein Array hätte ich auch bei IPv6, nur mit entsprechend mehr Stellen. Explode an : führt nicht zum gewünschten Ergebnis, da zwischen :: ja noch Nullen ergänzt werden müssen.
[iparr] => Array
( [0] => 192 [1] => 168 [2] => 2 [3] => 10 ) Eigentlich hätte ich gedacht, dass PHP für sowas schon eine Funktion parat hat, leider habe ich aber keine gefunden, als ich bei ![]() Mfg FAlter |
Re: [PHP] IPv6 in einzelne Bytes zerlegen
Moin,
laut der IPv6-Spezifikation darf :: nur einmal vorkommen. Soll heissen, wenn du explode(':', $foo) aufrufst und weniger als 8 Elemente hast, musst du das leere Element "kopieren". Wenn du 8 Elemente hast, langts den leeren String als 0 hinzuschreiben. Beispielcode ausm Kopf:
Code:
Der Code ist ungetestet, und auch die IP-Adressen ::1 und :: duerften damit IMO nicht ohne weiteres verarbeitbar sein. Fuer mehr fehlt mir aber grad die Lust ;)
$temp_ip_arr = explode(':', $ip_address);
$ip_arr = array(); $count = count($temp_ip_arr); $missing_blocks = 9 - $count; for ($i = 0; $i < $count; $i++) { if ($temp_ip_arr[$i]) { $ip_arr[] = $temp_ip_arr[$i]; } else { for ($j = 0, $j <= $missing_blocks; $j++) { $ip_arr[] = $temp_ip_arr[$i]; } } } Greetz alcaeus |
Re: [PHP] IPv6 in einzelne Bytes zerlegen
Hi,
danke - ausgehend von deinen Hinweisen habe ich mir nun einen Code gebaut. Jetzt muss nur noch der Praxistest hinhauen. Falls jemand IPv6 nutzt (mein Router kann das leider nicht :( ), dann bitte mal ![]() Mfg FAlter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz