網站常用的子產品可能出了注冊、登陸、發稿、留言、評論,剩下比較重要的也許就是擷取IP并作相應的資料處理了。自己搭建IP資料庫占資源,而且更新不便,何不使用現成的IP查詢呢?下面自己寫了個擷取IP實體位址的PHP代碼(有一定的瑕疵,請高手不吝賜教) Venus'Blog
<!DOCTYPE html> <html lang="en"> <head>
<title></title> <meta charset="UTF-8" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> </head> <body> <?php
$ipAddr = "218.75.124.100";
$ip138Addr = "http://www.ip138.com/ips8.asp?ip=".$ipAddr."&action=2";
$contents = file_get_contents($ip138Addr);
$pattern = "/\<li.+?\/li\>/";
$string = $contents;
preg_match_all($pattern,$string,$addrArray);
$num = count($addrArray[0]);
for($i = 0;$i<$num;$i++){
echo $addrArray[0][$i] = mb_convert_encoding($addrArray[0][$i],"UTF-8", "GB2312");
switch($i) {
case 0:$str = "<li>本站主資料:</li>";break;
case 1:$str = "<li>參考資料一:</li>";break;
case 2:$str = "<li>參考資料二:</li>";break;
case 3:$str = "<li>參考資料三:</li>";break;
case 4:$str = "<li>參考資料四:</li>";break;
case 5:$str = "<li>參考資料六:</li>";break;
case 6:$str = "<li>參考資料七:</li>";break;
}
$addrArray[0][$i] = trim($addrArray[0][$i],$str);
}
$addrArray[0][0] = trim($addrArray[0][0],":");
echo "<pre>";
print_r($addrArray);
echo "</pre>";
?> </body> </html>
這段代碼采用通路
http://www.ip138.com後使用正規表達式進行截取部分内容,
其中正規表達式是自己寫的。

開始還好,下面的處理結果出現了亂碼,如果把$str(去除字元串首尾的辨別)定義的字元串就沒有了亂碼;而且再加一個單獨的去除“:”的語句,就可以實作無亂碼的現象,不知道為什麼了……