/** * 获取ip对应的地区 * @param $ip ip */ public static function get($ip) { $ip = self::IpToInt($ip); if (self::$fp == NULL) { die('can not find qqwry.dat...'); } fseek(self::$fp, 0, SEEK_SET); $buf = fread(self::$fp, 8); self::$FirstStartIp = ord($buf[0]) + ord($buf[1]) * 256 + ord($buf[2]) * 256 * 256 + ord($buf[3]) * 256 * 256 * 256; self::$LastStartIp = ord($buf[4]) + ord($buf[5]) * 256 + ord($buf[6]) * 256 * 256 + ord($buf[7]) * 256 * 256 * 256; $RecordCount = floor((self::$LastStartIp - self::$FirstStartIp) / 7); if ($RecordCount <= 1) { self::$Country = 'FileDataError'; fclose(self::$fp); } $RangB = 0; $RangE = $RecordCount; while ($RangB < $RangE - 1) { $RecNo = floor(($RangB + $RangE) / 2); self::getStartIp($RecNo); if ($ip == self::$StartIp) { $RangB = $RecNo; break; } if ($ip > self::$StartIp) { $RangB = $RecNo; } else { $RangE = $RecNo; } } self::getStartIp($RangB); self::getEndIp(); if (self::$StartIp <= $ip && self::$EndIp >= $ip) { self::getCountry(); self::$Local = str_replace('我们一定要解放台湾!!!', '', self::$Local); self::$Local = str_replace('CZ88.NET', '', self::$Local); } else { self::$Country = '未知'; self::$Local = ''; self::$Local = str_replace('CZ88.NET', '', self::$Local); } fclose(self::$fp); return self::$Country . self::$Local; }