X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=Uplink%2FNumerics.class.php;fp=Uplink%2FNumerics.class.php;h=4727dcf2756ab75fbbd77e130f7efe68bee1de8f;hb=8fc32c585446865b73c89859c35d1387fadbf9af;hp=55db20977a6b0ecc3042f3def2753f4a984bb0b0;hpb=7b3f5a75e7bba8bd536cd0cbbaa595113765a15e;p=PHP-P10.git diff --git a/Uplink/Numerics.class.php b/Uplink/Numerics.class.php index 55db209..4727dcf 100644 --- a/Uplink/Numerics.class.php +++ b/Uplink/Numerics.class.php @@ -32,6 +32,9 @@ * * static int numToInt(String $numeric) * returns the integer value, the numeric represents + * + * static String parseIP(String $numeric) + * parses an IP Address in numeric format */ class Numerics { @@ -78,6 +81,34 @@ class Numerics { return $int; } + public static function parseIP($numeric) { + if(strlen($numeric) == 6) { //IPv4 + $value = self::numToInt($numeric); + $ip = array(); + $ip[0] = ($value & 0xff000000) >> 24; + $ip[1] = ($value & 0x00ff0000) >> 16; + $ip[2] = ($value & 0x0000ff00) >> 8; + $ip[3] = ($value & 0x000000ff); + return implode(".", $ip); + } else { //IPv6 + $ip = array(); + for($i = 0; $i < strlen($numeric);) { + if($numeric[$i] == "_") { + $rightBlocks = (strlen($numeric) - ($i + 1)) / 3; + $skipCount = 8 - count($ip) - $rightBlocks; + for($j = 0; $j < $skipBlocks; $j++) { + $ip[] = "0"; + } + } else { + $value = self::numToInt($numeric[$i].$numeric[$i+1].$numeric[$i+2]); + $ip[] = dechex($value); + $i += 3; + } + } + return implode(":", $ip); + } + } + } ?> \ No newline at end of file