$ipv6 = array();
$ip = explode(":",$ip);
$last_zero = false; $zero_sequence = 0; $biggest_zero_sequence = 0; $max_start = -1;
- foreach($ip as $i => $v) {
+ $i = 0;
+ foreach($ip as $v) {
if($v == "") {
$skipBlocks = (8 - count($ip));
for($j = 0; $j < $skipBlocks; $j++) {
$ipv6[$i+$j] = "_";
}
$max_start = $i;
- $biggest_zero_sequence = $skipBlocks;
+ if($last_zero) {
+ $zero_sequence += $skipBlocks;
+ } else {
+ $last_zero = true;
+ $zero_sequence = $skipBlocks;
+ }
+ $i+=$skipBlocks;
+ if($zero_sequence > $biggest_zero_sequence) {
+ $biggest_zero_sequence = $zero_sequence;
+ $max_start = $i-($zero_sequence-1);
+ }
} else {
$value = hexdec($v);
if($value == 0) {
$ipv6[$i] = self::intToNum($value,3);
$last_zero = false;
}
+ $i++;
}
}
$ip = "";