php中获取指定IP的物理地址的代码(正则表达式)_php技巧

自己搭建IP数据库占资源,而且更新不便,何不使用现成的IP查询呢?下面自己写了个获取IP物理地址的PHP代码(有一定的瑕疵,请高手不吝赐教)

复制代码 代码如下:

<!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(去除字符串首尾的标识)定义的字符串就没有了乱码;而且再加一个单独的去除“:”的语句,就可以实现无乱码的现象,不知道为什么了……
正则表达式——获取指定IP的物理地址(二) chinaz数据
上一个IP获取的结果不是很完善,究其原因是因为ip138的IP解析应对国外的地址时不是很详细,所以又重新写了个用Chianz.com的代码。

复制代码 代码如下:

<!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 = "4.4.44.4";
$ipChinazAddr = "http://tool.chinaz.com/IP/?IP=".$ipAddr;
$contents = file_get_contents($ipChinazAddr);
$pattern = "/\=\=\>\>.+\<\/strong\>\<br \/\>/";
$string = $contents;
preg_match_all($pattern,$string,$addrArray);
$num = count($addrArray[0]);
$pattern = "/(==>>).+(==>>\s)/";
for($i = 0;$i<$num;$i++){
$addrArray[0][$i] = preg_replace($pattern,"",$addrArray[0][$i]);
}
echo "<pre>";
print_r($addrArray);
echo "</pre>";
?>
</body>
</html>

结果还令人满意

  以上是本人写的两个获取IP物理地址的代码,作为一个初学者,没事的时候写写简单的代码也还是一件挺有意思的事。但是毕竟是一个初学者,不能更好的注意安全性、空间利用率、时间效率等问题,还望各位留下你的足迹,小弟谢了

时间: 2024-10-21 11:38:42

php中获取指定IP的物理地址的代码(正则表达式)_php技巧的相关文章

php中获取指定IP的物理地址的代码(正则表达式)

自己搭建IP数据库占资源,而且更新不便,何不使用现成的IP查询呢?下面自己写了个获取IP物理地址的PHP代码(有一定的瑕疵,请高手不吝赐教) 复制代码 代码如下: <!DOCTYPE html> <html lang="en"> <head> <title></title> <meta charset="UTF-8" /> <meta name="author" con

通过ASP禁止指定IP和只允许指定IP访问网站的代码_应用技巧

一.禁止指定IP防问网站,并执行相应操作: 复制代码 代码如下: <% Dim IP,IPString,VisitIP '设置IP地址,用"|"隔开 IPString="|192.168.0.42|192.168.0.43|" '获取IP地址 IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If IP = "" Then IP = Request.ServerVa

PHP使用strstr()函数获取指定字符串后所有字符的方法_php技巧

本文实例讲述了PHP使用strstr()函数获取指定字符串后所有字符的方法.分享给大家供大家参考,具体如下: PHP的strstr()函数可搜索字符串在另一字符串中的第一次出现位置,并返回字符串的剩余部分. strstr()函数定义如下: strstr(string,search,before_search) 参数说明: string 必需.规定被搜索的字符串. search  必需.规定所搜索的字符串. 如果此参数是数字,则搜索匹配此数字对应的 ASCII 值的字符. before_searc

web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验_php技巧

安全过滤后的getIP函数 复制代码 代码如下:   function getIP() { $realip = ''; //设置默认值 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {  $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {  $realip = $_SERVER['HTTP_CLIENT_IP']; } el

php中禁止单个IP与ip段访问的代码小结_php技巧

禁止单个IP <?php //加IP访问限制 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $userip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'

php编程实现获取excel文档内容的代码实例_php技巧

1.readexcel.system.php 复制代码 代码如下: <?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * A class for reading Microsoft Excel Spreadsheets. * * Originally developed by Vadim Tkachenko under the name PHPExcelReader. * (http://source

PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)_php技巧

看点: 1.file_get_contents超时控制. 2.页面编码判断. 3.键盘Enter键捕捉响应. 4.键盘event兼容处理.//event = event || window.event; 5.XMLHttpRequest 和 jQuery 两种实现方案. 6.页面及源码同时展示. XMLHttpRequest版本 get_web.php 复制代码 代码如下: <?php header("Content-type: text/html; charset=utf-8"

获取指定IP的终端的MAC地址

    因为业务需要,需要给公司部分终端进行登记,以保证授权终端能够登录业务系统,最好的方法就是记录下每台终端的MAC地址来进行验证是否有授权.     下面是采用调用API的方式获取指定IP的终端的MAC地址:   [DllImport("Iphlpapi.dll")]  public static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);  //dest为目标机器的IP;

WordPress中获取指定分类及其子分类下的文章数目_php实例

获取特定分类文章数  有时候我们想获取某个分类(category)下的文章数目,以便在博客的某个地方显示出来.下面就提供几个获取特定分类的文章数的方法,你可以根据个人喜好选择: 方法一:      将以下PHP代码放置在主题目录下的functions.php中: function wt_get_category_count($input = '') { global $wpdb; if($input == '') { $category = get_the_category(); return