天天看點

PHP正規表達式擷取指定IP的實體位址

  網站常用的子產品可能出了注冊、登陸、發稿、留言、評論,剩下比較重要的也許就是擷取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

後使用正規表達式進行截取部分内容,

其中正規表達式是自己寫的。

  

PHP正規表達式擷取指定IP的實體位址

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