网站常用的模块可能出了注册、登陆、发稿、留言、评论,剩下比较重要的也许就是获取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后使用正则表达式进行截取部分内容,Venus'Blog其中正则表达式是自己写的。
开始还好,下面的处理结果出现了乱码,如果把$str(去除字符串首尾的标识)定义的字符串就没有了乱码;而且再加一个单独的去除“:”的语句,就可以实现无乱码的现象,不知道为什么了……Venus'Blog