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

自己搭建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物理地址的代码,作为一个初学者,没事的时候写写简单的代码也还是一件挺有意思的事。但是毕竟是一个初学者,不能更好的注意安全性、空间利用率、时间效率等问题,还望各位留下你的足迹,小弟谢了

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
假设有 IP 地址范围 192.168.0.0~192.168.0.255,只允许此 IP 段访问的代码如下: 复制代码 代码如下: ?php $IP = $_SERVER['REMOTE_ADDR']; $from = strcmp($IP,'192.168.0.0'); $to = strcmp($IP,'192.168.0.255'); if (!($from = 0 $to = 0)) echo "Access Denied"; else echo "Homepage"; ? 从流程上讲,这段代码首
本文实例分析了php定义一个参数带有默认值的函数用法。分享给大家供大家参考。具体分析如下: php的函数参数可以指定默认值,指定默认值后,调用时如果不给该参数赋值,则该参数就使用默认值 ?phpfunction capitalize( $str, $each=TRUE ) { $str = strtolower($str); if ($each === TRUE) { $str = ucwords ($str); } else { $str = strtoupper($str); } echo ("$st
1. 函数的任意数目的参数 你可能知道PHP允许你定义一个默认参数的函数。但你可能并不知道PHP还允许你定义一个完全任意的参数的函数 下面是一个示例向你展示了默认参数的函数: 复制代码 代码如下: // 两个默认参数的函数 function foo($arg1 = '', $arg2 = '') { echo "arg1: $arg1\n"; echo "arg2: $arg2\n"; } foo('hello','world'); /* 输出: arg1: hello arg2: world */ fo
Mysql.class.php 下载 复制代码 代码如下: ?php class Mysql { private $db_host; //主机地址 private $db_user; //用户名 private $db_pass; //连接密码 private $db_name; //名称 private $db_charset; //编码 private $conn; public $debug=false;//调试开关,默认关闭 private $query_id; //用于判断sql语句是否执行成功
复制代码 代码如下: ?php $memcached = array( //用memcached 的 多 进程模拟 多台memcached 服务器 cn en 为 内存服务器名 'cn'=array('192.168.254.144',11211), 'en'=array('192.168.254.144',11212) ); $mysql = array( // mysql 的主从 我的环境是 : xp 主 linux 从 mysql 5 php5 'master'=array('192.168.254

php对数组排序的简单实例 - 2015-04-05 15:04:44

复制代码 代码如下: ?php class='pingjiaF' frameborder='0' src='http://www.jb51.net' scrolling='no' 对数组排序 usort() 函数使用用户自定义的函数对数组排序。 */ function cmp($a, $b) //用户自定义回调函数 { if($a==$b) //如果两个参数相等 { return 0; //返回0 } return($a$b)?-1:1; //如果第1个参数大于第2个返回1,否则-1 } $a=array

使用PHP强制下载PDF文件示例 - 2015-04-05 15:04:32

我们有时会遇到这样一种情况,当需要下载一个PDF文件时,如果不经处理会直接在浏览器里打开PDF文件,然后再需要通过另存为才能保存下载文件。本文将通过PHP来实现直接下载PDF文件。 实现原理:我们仅仅只需要修改页面HTTP头,把Content-Type设置为force-download,问题即可解决。 请看代码: 复制代码 代码如下: forceDownload("pdfdemo.pdf"); function forceDownload($filename) { if (false == file_exi
PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话 curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数 curl_errno — 返回一个包含当前会话错误信息的数字编号 curl_error — 返回一个包含当前会话错误信息的字符串 curl_exec — 执行一个curl会话 curl_getinfo — 获取一个curl连接资源句柄的信息 curl_init — 初始化一个curl会话 curl_
但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载. 复制代码 代码如下: ?php $file = "/tmp/dummy.tar.gz"; header("Content-type: application/octet-stream"); header('Content-Disposition: attachment; filename="' . basename($file) . '"'); header("Conten

php调用KyotoTycoon简单实例 - 2015-04-05 15:04:23

本文实例讲述了php调用KyotoTycoon的方法。分享给大家供大家参考。具体如下: Kyoto Tycoon(简称KT)是Tokyo Tyrant 的作者Mikio Hirabayashi 的系列作品之一,KT 是一个数据库网络层服务,它提供一个插件机制,可以挂载几乎所有的数据库存储设备。 这里提供一个简单的应用实例: ?phprequire_once 'Net/KyotoTycoon.php';use Net\KyotoTycoon;$cacheManager = new KyotoTycoon(a