<?php
function convertIPv6To4($ip) {
// validate if given IP is a proper IPv6 address
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
// validate if given IP is a proper IPv4 address
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) {
// ip address is invalid
return '';
}
return $ip;
}
// check if ip is a masked IPv4 address
if (substr($ip, 0, 7) == '::ffff:') {
$ip = substr($ip, 7);
if (preg_match('~^([a-f0-9]{1,4}):([a-f0-9]{1,4})$~', $ip, $matches)) {
$ip = array(
base_convert($matches[1], 16, 10),
base_convert($matches[2], 16, 10)
);
$ipParts = array();
$tmp = $ip[0] % 256;
$ipParts[] = ($ip[0] - $tmp) / 256;
$ipParts[] = $tmp;
$tmp = $ip[1] % 256;
$ipParts[] = ($ip[1] - $tmp) / 256;
$ipParts[] = $tmp;
return implode('.', $ipParts);
}
else {
return $ip;
}
}
else {
// given ip is an IPv6 address and cannot be converted
return $ip;
}
}
echo convertIPv6To4('2607:f0d0:1002:51::4');
- Output for 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- 2607:f0d0:1002:51::4
- Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.6
- Fatal error: Call to undefined function filter_var() in /in/Ep4gJ on line 4
Process exited with code 255. - Output for 4.4.5 - 4.4.9
- Fatal error: Call to undefined function: filter_var() in /in/Ep4gJ on line 4
Process exited with code 255. - Output for 4.3.2 - 4.3.11, 4.4.0 - 4.4.4
- Fatal error: Call to undefined function: filter_var() in /in/Ep4gJ on line 4
Process exited with code 255. - Output for 4.3.0 - 4.3.1
- Fatal error: Call to undefined function: filter_var() in /in/Ep4gJ on line 4
preferences:
256.07 ms | 401 KiB | 355 Q