public static function ip2long($ip)
{
$long = -1;
if (self::isValidv6($ip)) {
if (!function_exists('bcadd')) {
throw new \RuntimeException('BCMATH extension not installed!');
}
$ip_n = inet_pton($ip);
$bin = '';
for ($bit = strlen($ip_n) - 1; $bit >= 0; $bit--) {
$bin = sprintf('%08b', ord($ip_n[$bit])) . $bin;
}
$dec = '0';
for ($i = 0; $i < strlen($bin); $i++) {
$dec = bcmul($dec, '2', 0);
$dec = bcadd($dec, $bin[$i], 0);
}
$long = $dec;
} else {
if (self::isValidv4($ip)) {
$long = ip2long($ip);
}
}
return $long;
}