今天在研究純真ip資料庫,在對ip位址進行比較匹配的問題上花了很多時間,效果總是不太理想.
不經意間看到php存在這個函式:ip2long,就是將ip字串轉成長整型.所以下意識就覺得mysql應該也有.果然老天不負有心人,讓我終於找到了:inet_aton和inet_ntoa.
函式inet_aton和php的ip2long相似,是把字串轉成長整型.
而函式inet_ntoa是inet_aton的逆過程.
有了這兩個函式,在資料庫中操作ip就相當容易了.
另附件有mysql版的純真ip資料庫及php操作純真ip資料庫(dat檔案)的類:
<?php
/*** @author 馬秉堯
*/class iplocation
/*** 返回讀取的3個位元組的長整型數
** @access private
* @return int
*/function getlong3()
/*** 返回壓縮後可進行比較的ip位址
** @access private
* @param string $ip
* @return string
*/function packip($ip)
/*** 返回讀取的字串
** @access private
* @param string $data
* @return string
*/function getstring($data = "")
return $data;
}/**
* 返回地區資訊
** @access private
* @return string
*/function getarea()
return $area;
}/**
* 根據所給 ip 位址或網域名稱返回所在地區資訊
** @access public
* @param string $ip
* @return array
*/function getlocation($ip)
else
else }}
//獲取查詢到的ip地理位置資訊
fseek($this->fp, $findip);
$location['beginip'] = long2ip($this->getlong()); // 使用者ip所在範圍的開始位址
$offset = $this->getlong3();
fseek($this->fp, $offset);
$location['endip'] = long2ip($this->getlong()); // 使用者ip所在範圍的結束位址
$byte = fread($this->fp, 1); // 標誌位元組
switch (ord($byte))
break;
case 2: // 標誌位元組為2,表示國家資訊被重定向
fseek($this->fp, $this->getlong3());
$location['country'] = $this->getstring();
fseek($this->fp, $offset + 8);
$location['area'] = $this->getarea();
break;
default: // 否則,表示國家資訊沒有被重定向
$location['country'] = $this->getstring($byte);
$location['area'] = $this->getarea();
break;
}if ($location['country'] == " cz88.net")
if ($location['area'] == " cz88.net")
return $location;
}/**
* 建構函式,開啟 qqwry.dat 檔案並初始化類中的資訊
** @param string $filename
* @return iplocation
*/function iplocation($filename = "qqwry.dat")
}/**
* 析構函式,用於在頁面執行結束後自動關閉開啟的檔案。**/
function _iplocation()
}?>
mysql字串亂碼 解決Mysql字串亂碼
1 字符集和字元序2 3 字符集 character set 定義了字元以及字元編碼。4 5 字元序 collation 定義了字元的比較規則。6 7 mysql支援多種字符集 與 字元序。8 9 乙個字符集對應至少一種字元序 一般是1對多 10 11 兩個不同的字符集不能有相同的字元序。12 13...
字串進行壓縮
通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1 僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2 壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...
字串進行壓縮
壓縮字串 1 2 壓縮操作類 3 4public static class compression523 2425 26 對byte陣列進行解壓 27 28 待解壓的byte陣列 29 解壓後的byte陣列 30public static byte decompress byte data 3140...