今天要给大家做示例的网站是163的 娱乐频道 这个应该是个比较通用和实用的规则,下面开始。
如果您是火车采集器的老手,那么您可以参考下,因为我要讲解的会有违传统的思维;如我您是新手那么您最好能仔细看下,因为这将加快您的入门,同时在以后给您节省很多时间。以下是一些采集的基本步骤,您可以灵活运用:
一、建立站点
1、请先打开火车采集器,新建站点,看下图:
为了方便管理您可以为您的站点取任何的您觉得易记的名称,但是我建议用目标源的名字作为站点的名称有利于日后的管理,如下图
大部分的站点,通站往往只有一套模版或者有几套类似的模版,这边所谓的类似讲的是模版中的标记很接近,那什么是模版标记?模版标记指的是某部分内容开始和结束记号。比如很多正规的网站(通常是一些站点比较大,内容比较多的网站,比如sina、163等)会在内容开始的部分用类似于或
2、标题标签讲解。对应的页面在这:http://ent.163.com/06/1029/11/2UJNHOS3000322EL.html
首先从“站点基本信息”切换到“整站内容规则”,然后把要采集的内容页面的网址拷贝到“典型页面”接着点击“测试”读取源码。先从标题标签开始,我们发现按默认标签采集回来的标题多了“_网易娱乐”,请双击标题标签或者选种标题标签在点击修改,把“_网易娱乐”添加到排除内容框里,标题标签完成。如图:
3、内容标签讲解。制作采集规则(任务)的任何一个标签最重要的就在于寻找开始也结束的标志。目前大部分的采集器要求开始和结束的标志必须是整个源代码的唯一标志,也就是所有的html源码里只能找到一个开始或结束的标志。但是火车采集器并不需要这么作,你要找的只需要是从上到下第一个标志就可以了,我的意思是说,html代码中允许有n个相同的开始(结束,下同)标志,但是只要这个位于我们要采集的内容的地方的标志是html从上到下的第一个就可以了。打开任何一个内容页面,这边以http://ent.163.com/06/1029/11/2UJNHOS3000322EL.html 为例,我们发现他的内容从“进入论坛”,因此双击代码测试框,查找需要的代码,如图:
我们可以用这个作为内容开始的标志,不过这样还不完美,请自己在打开几个内容页面,在网页中“右键点击”——“查看源码”,然后对比代码,并提取相同的部分,我以
接下来看内容结束标志,如下两图:
下面是根据我么设置规则采集回来的内容
一般来说我们从开始标志到结束标志所采集回来的内容中都会包含有必须排除的内容或广告,或链接。这边我们需要排除的内容是“相关专题>>> 第六届金鹰电视艺术节”。排除的方法是,找到相对应的代码把代码完整的拷贝进内容排除窗口,变动的部分用“(*)”替代。由于这个是整站规则,所以必须多找几个类别,比如现在的这个163娱乐还包括了“明星 | 图片 | 电影 | 电视 | 音乐 | 论坛 | 专题 | 名人访 ”等,在这边我只抽取“明星、图片、电影”作为列子跟大家讲解。找其他的类别只是希望把规则做的通用完美,如果你只要其中的一个分类,比如“图片”那么你直接做这个的规则即可。
http://ent.163.com/06/1018/15/2TNNT7EU00031H2L.html 这个页面刚好有分页,所以就顺便讲下上下页的设置。他这边的“上一页”和“下一页”是用图片做链接的,所以只要不图片的名字(右键点击对应的图片查看属性,拷贝图片名即可)拷贝进对应的代码框即可,详细的看图片:
这边提示下,任何内容的排除你只要找到对应的代码完整的拷贝进代码排除窗并把其中可变的部分替换成"(*)"即可。由于他这边没有广告,所有整站规则就算制作完毕,点击保存进入单任务制作。好了,整站规则就讲这两个标签,其他的根据需要自己按上面的步骤添加,记住,万变不离其宗。其他的问题请到火车采集器论坛:http://bbs.locoy.com 探讨。
二、下面讲解单任务规则制作:
1、内容规则的制作,很多人到现在可能都还不明白火车采集器好在哪,现在讲的这个绝对是火车独有的特色(至少到目前为止是这样,以后有没有人出相同的功能就不得而知了!)
火车采集器是不需要经过网址规则制作即可直接进入内容采集,这样你就可以根据站点的难易决定是否采集选定的目标源,而不必等到网址采集后才发现原来这个网站你没办法采或者根本不值得你浪费这个时间(前面的时间白搭了!)。
火车v3.0最大的功能之一既是可以继承站点的规则,只要你前面制作的规则通用,那么在接下来的所有任务都不需要再制作内容采集规则了。由于前面我们制作的内容采集规则通用,所以这边的规则我们就不用讲解了,直接继承站点的,如图:
2、网址采集规则制作
步骤:“新建”——“新建任务”,其他的操作如下图:
作规则需要善于去发现规律性的东西,作到这点采集就没什么问题了。我们要采集示例的地址在这http://ent.163.com/special/00031HI0/entnews.html
这板只采集其中的1-3页作为范例。我们发现每个叶面的网址开始前面都包含“过往娱乐热点”结束都是“第1 2……页”,所以请到html源代码里面拷贝对应的代码,到特定区域采集范围中,另外,网址中必须包含“/06/” 这样网址采集就搞定了(简单吧,自己试试看),如下图:
3、发布方式。发布方式有5种,这边以最常用的“在线发布”为例。
选定web在线发布到网站,点击“定义全局发布方式”,然后按系统提示的步骤:选定发布模块——》填写网站/cms根地址——》使用火车内置浏览器登陆——》登陆后关闭内置浏览器——》刷新列表——》测试模块,测试成功——》保存配置——》保存任务——》发表 如下图高亮的部分是你要操作的步骤,从左到右从上到下:
下面是刚才我采集到本地论坛采集测试的两个截屏:
所以特意写了这个配置文档,相信按照以下步骤你一定会成功的.错误的地方也希望各位指正.
本例是在wiondws XP下
php5.2.1(zip)
apache2.2.4
MySQL5.0.37
phpmyadmin2.10.0.2
ZendOptimizer-3.2.6
的安装与配置
Apache 的安装
1 点击apahce安装包
2 接受协议
3 下面3项随便填即可
apache 监听80 端口.如果iis用了80端口,修改iis端口或者apache端口,以免冲突
4 这里默认的是 typical,点击next.
5 这里可用修改安装路径,注意安装路径不能含中文.
6 点击install开始安装
7 安装完成后在浏览器里打入 http://localhost 或者 http://127.0.0.1
如果可以看到这个页面,证明apache安装成功,已经可以解释静态页面了
MySQL 的安装
1 点击MySQL安装包
2 默认是Typical,如果想修改安装路径的话也可以选择custom.
注意:安装mysql的路径中,不能含有中文!
3 点击intall开始安装
4 跳过注册
5 是否现在就配置 MySQL.也可以之后在开始菜单的configuration wizard 进行配置.
这里是现在进行配置
6 选择Detailed Configuration(详细设置),点Next继续
7 下面这个选项是选择mysql应用于何种类型,第一种是开发服务器,
将只用尽量少的内存,第二种是普通WEB服务器,将使用中等数量内存,
最后一种是这台服务器上面只运行MySQL数据库,将占用全部的内存.
用户可根据自己的需求,选择选项.这里只选择开发服务器,点Next继续
8 下面是选择数据库用途,第一种是多功能用途,
将把数据库优化成很好的innodb(事务)存储类型和高效率的myisam(非事务)存储类型,
第二种是只用于事务处理类型,最好的优化innodb,但同时也支持myisam,只有myisam才支持全文索引
最后一种是简单的网络开发,适合于简单的应用,只有不支持事务的myisam类型是被支持的.
一般选择第一种多功能的.
9 下面是选择InnodDB的数据存放位置,一般默认好了,不需要改动
(如果要修改数据保存路径,也可用在安装后修改my.ini的datadir的值)
10 下面是选择MySQL允许的最大连接数,第一种是最大20个连接并发数,
第二种是最大500个并发连接数,最后 一种是自定义,你可以根据自己的需要选择.
这里选择第一个
11 下面是是否运行网络链接.这里选择复选框.数据库监听的端口,一般默认是3306,
如果改成其他端口,以后连接数据库的时候都要记住修改的端口,否则不能连接mysql数据库,
比较麻烦,这里不做修改,用mysq的默认端口:3306
12 这一步设置mysql的默认编码,默认是latin1,也是标准的编码.第二种是UTF8,第三种是手动设置.
编码是版本4.1以上引入的.如果要用原来数据库的数据,最好能确定原来数据库用的是什么编码,如果这里设置的编码
和原来数据库数据的编码不一致,在使用的时候可能会出现乱码.建议使用latin1标准编码
当然我们有需要的话,也可以修改它的编码(不建议).
13 这一步是是否要把mysql设置成windows的服务,一般选择设成服务,
这样以后就可以通过服务中启动和关闭mysql数据库了.推荐:下面的复选框也勾选上,
这样,在cmd模式下,不必非到mysql的bin目录下执行命令.在命令行下咨询可以执行文件
14 这一步是设置mysql的超级用户密码,这个超级用户非常重要,
对mysql拥有全部的权限,请设置好并牢记超级用户的密码,
下面有个复选框是表示创建一个匿名账号,这会使数据库系统不安全.
如果有这个需求,也请勾选.
15 点击 Execute进行安装
16 点击finish完成安装
17 我们可以开始使用mysql了,打开 开始菜单 所有程序的 mysql Command line Client,输入密码
出现这个界面说明mysql已经安装好了
可能出现的问题:
如果在第15步,出现下图提示
是因为你之前装过mysql.卸载时还保留了一些配置文件.
点击retry看看是否可以通过。否则点击 cancel 退出.然后点击开始菜单的 MySQL Server Instance Config Wizard
重新配置 mysql
重复之前的操作.第14步将会出现界面是像下面这样
有三个输入密码的地方,你原来装过mysql.
你在第一个文本框输入原来root的密码,后面两个文本框输入root的新密码就可以了
如果还是不行那就重装一次MySQL。
重装注意事项:最好删除原来的所有文件,必要的话,可以清一下注册表,
如果你机器上没有其它mysql相关的程序.而且一定记得不要保留原有的my.ini文件.
还有就是删除原来安装路径下的文件,并删除数据目录下面的ibdata1文件.
更多文章 php爱好者站 http://www.phpfans.net
PHP 的安装
由于php是一个zip文件(非install版),安装较为简单
解压就行.把解压的 php-5.2.1-Win32 重命名为 php5.并复制到C盘目录下.即安装路径为 c:\php5
1 找到php目录下的 php.ini.recommended (或者php.ini-dist)文件,重命名为 php.ini
并复制到系统盘的windows目录下(以c:\windows为例).
2 再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下.
3 把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下
注意:不要把 php_mysql.dll 和 php_mssql.dll 混淆
如果没有加载 php_gd2.dll php将不能处理图像.没有加载php_mysql.dll php将不支持mysql函数库
php_mbstring.dll在后面使用phpmyadmin时支持宽字符
更多文章 php爱好者站 http://www.phpfans.net
ZendOptimizer 的安装
Zend Optimizer用优化代码的方法来提高PHP应用程序的执行速度。执行使用Zend Optimizer的PHP程序比不使用的要快40%到100%。而且一些用Zend SafeGuard 加密过的文件,必须装了Zend Optimizer才可以运行.
注意:Zend Optimizer 的安装与否并不影响php正常运行,如果你觉得麻烦,这步可以省去。
1 点击安装Zend Optimizer
2 接受协议,点击next
3 选定安装路径
4 选定apache本版,我们用的是apache2.2.4,所以这里选 apache2.x
5 选定 php.ini 的位置.我们的是在 C:\WINDOWS\ 下
6 选定apache安装路径.我们的是C:\Program Files\Apache Software Foundation\Apache2.2 .所以要修改过来
7 点击install进行安装
8 点击 是.安装程序自动完成配置和服务器重启.
9 点击 Finish 完成安装
所有东西安装完成后我们再进行配置
配置php并关联MySQL
打开c:\windows\php.ini文件
1 设置扩展路径
查找 extension_dir 有这么一行
extension_dir = "./"
将此行改成
extension_dir = "C:\php5\ext"
其中C:\php5是你安装php的路径.路径不正确将无法加载dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)
2 分别查找
;extension=php_mbstring.dll
;extension=php_gd2.dll
;extension=php_mysql.dll
把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
注意不要把 ;extension=php_mysql.dl 和 ;extension=php_mssql.dl 混淆
当然前面我们也把这些dll复制到system32下了.(大家在安装的过程中都注意到如何把一些dll加载入来了.
以后要加载一些dll,比如说php_mysqli.dll,也就懂得怎么加载了)
3 设置会话保存路径
查找session.save_path 有这么一行
; session.save_path = "N;/path"
在此行后加入一行(注意是加入一行,不是加到后面)
session.save_path = "C:\WINDOWS\Temp"
保存到你的临时目录下,这里完全可以保存到windows临时目录Temp下
4 还有比较值得注意的是 short_open_tag .有一些php版本默认是Off的.
也就是说 php不能使用短标记如 <? ?> 必须使用<?php ?>
由于短标记使用方便,并且很多程序也是用短短标记来写,如discuz等
如果不把 short_open_tag 改成On将出现的症状将很难判断是上面原因,这里建议修改
查找
short_open_tag = Off
改为
short_open_tag = On
5 是否显示错误 display_errors
出于安全性考虑,display_errors 有些版本也默认为 Off.
就是说在调试时,如果php代码有误,就只出现一个空白页.而不会显示出错原因和出错行数.
这样调试起来将非常不便,建议根据自己需要修改
查找
display_errors = Off (注意不是 ; - display_errors = Off [Security])
改成
display_errors = On
6 显示NOTICE敬告提示
第五步虽然打开了出错提示,但出错报告还受到 error_reporting 的控制.
php5默认关闭NOTICE敬告提示,如果是在本地调试,建议打开NOTICE敬告提示.
查找
error_reporting = E_ALL & ~E_NOTICE
改成
error_reporting = E_ALL
另外提示一下,在程序中也可以通过error_reporting()控制错误报告输出,具体怎么用大家参考下手册.
7 register_globals
出于安全性考虑它默认也是Off
当register_globals=Off的时候,下一个程序接收的时候应该用$_POST['user_name']和$_POST['user_pass'])
当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值.
更详细的说明请参考
http://www.phpfans.net/bbs/archiver/?tid-234.htm
建议根据自己需要修改 .这里不建议修改,毕竟存在安全隐患.
8 php5时差问题
<?php echo date("Y-m-d H:i:s");?>时间相差八小时
为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC
其中PRC:People's Republic of China 中华人民共和国,
更详细解决方法请参考本论坛的
http://www.phpfans.net/bbs/archiver/?tid-60.html
关于文件上传要注意的配置请参考本论坛的
http://www.phpfans.net/bbs/viewthread.php?tid=1663&extra=page%3D1
更多文章 php爱好者站 http://www.phpfans.net
Apache整合PHP
1 从开始菜单打开apache配置文档,如图
2 修改网站根目录
查找DocumentRoot有这么一行
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误
查找 This should be changed to whatever you set DocumentRoot to
在它下面两行有
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录
3 查找 DirectoryIndex index.html
修改成
DirectoryIndex index.html index.html.var index.php
这样index.php 可以充当默认页面了
4 Apache中模块化安装php
查找 # LoadModule foo_module modules/mod_foo.so
在此行后加入一行
LoadModule php5_module C:/php5/php5apache2_2.dll
(其中C:/php5/php5apache2_2.dll是你安装php的相应路径.
注意不要把php5apache2_2.dll,php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.
PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,必须使用php5apache2_2.dll.否则就可能会出现
"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."
或者:
"The requested operation has failed"
的情况.关于这个问题的解决方法可以参考本论坛的
http://www.phpfans.net/bbs/viewt ... &extra=page%3D1
不过php5apache2_2.dll出来之后也就没有多少参考价值了)
5 查找 AddType application/x-gzip .gz .tgz
在此行后加入一行
AddType application/x-httpd-php .php
这样apache就可以解释php文件了
到这里配置基本完成了
########重启apache.如图,点击restart#########
在网站根目录下创建一个 phpinfo.php 文件
<?php
phpinfo();
?>
在浏览器打开
http://localhost/phpinfo.php
如果出现如下信息,则说明php已经配置好了
下面再测试php和mysql数据库的关联
在网站根目录下创建一个test.php 文件
//php爱好者站 系列教程 [url]http://www.phpfans.net[/url]
$host = "localhost";
$user = "root";
$password = "12345";//12345改成你的mysql密码
$link=mysql_connect($host,$user,$password);
if(!$link) echo "<h1>失败!</h1>";
else echo "<h1>成功!</h1>";
mysql_close();
?>
在浏览器打开 http://localhost/test.php
如果输出成功,则说明大功告成了.
更多文章 php爱好者站 http://www.phpfans.net
安装 phpMyAdmin
下载得到 phpMyAdmin-2.10.0.2-all-languages.zip,将其解压到 你网站根目录下并重命名为phpMyAdmin,
找到并打开 libraries/config.default.php (有些版本是当前目录的 config.inc.php或者 config.defaut.php)
做以下修改:
1 查找 password 有如下两行
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
把你的mysql密码填到$cfg['Servers'][$i]['password'] = ''; 单引号里边
2 搜索 $cfg['PmaAbsoluteUri'],将其后面单引号里的值设置为 phpMyAdmin 目录路径,如:http://localhost/phpMyAdmin/ ;
3 搜索 $cfg['DefaultLang'],将其后面单引号里的值设置为 zh-gb2312 ;
下面这项根据自己需要的编码修改(如果对数据库编码不是很熟悉的建议不要修改)
4 搜索 $cfg['DefaultCharset'],将其设置为 自己所要的编码.
打开浏览器,输入:http://localhost/phpMyAdmin/,Apache 和 MySQL 均已启动,
如果出现如下页面则phpmyadmin安装完成并可以使用了
phpMyAdmin 的具体功能,请慢慢熟悉,这里不再赘述.
《纯真IP数据库格式详解》
链接一:http://blog.csdn.net/heiyeshuwu/archive/2006/05/12/725675.aspx
链接二:http://lumaqq.linuxsir.org/article/qqwry_format_detail.html
纯真IP数据库官网:http://www.cz88.net/ip/
纯真IP数据库下载:http://update.cz88.net/soft/qqwry.rar
以下函数conrvertip()位于 Discuz!5_GBK/upload/include/misc.func.php 路径中,有兴趣可以具体去阅读分析。(下面代码我做了简单的修改,更便于阅读,核心没有修改)
<?
//===================================
//
// 功能:IP地址获取真实地址函数
// 参数:$ip - IP地址
// 作者:[Discuz!] (C) Comsenz Inc.
//
//===================================
function convertip($ip) {
//IP数据文件路径
$dat_path = 'QQWry.Dat';
//检查IP地址
if(!preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {
return 'IP Address Error';
}
//打开IP数据文件
if(!$fd = @fopen($dat_path, 'rb')){
return 'IP date file not exists or access denied';
}
//分解IP进行运算,得出整形数
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
//获取IP数据索引开始和结束位置
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = 0;
$EndNum = $ipAllNum;
//使用二分查找法从索引记录中搜索匹配的IP记录
while($ip1num>$ipNum || $ip2num<$ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
//偏移指针到索引位置读取4个字节
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;
}
//取完上一个索引后取下一个索引
$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
//没找到提示未知
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
//下面的代码读晕了,没读明白,有兴趣的慢慢读
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0)){
$ipAddr2 .= $char;
}
}
fclose($fd);
//最后做相应的替换操作后返回结果
if(preg_match('/http/i', $ipAddr2)) {
$ipAddr2 = '';
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
$ipaddr = 'Unknown';
}
return $ipaddr;
}
//========================
//
// 调用举例(速度很快)
//
//========================
echo convertip('219.238.235.10');
//输出: 北京市 电信通
echo convertip('23.56.82.12');
//输出:IANA
echo convertip('250.69.52.0');
//输出:IANA保留地址
echo convertip('238.69.52.0');
//输出:IANA保留地址 用于多点传送
echo convertip('192.168.0.1');
//输出:局域网 对方和您在同一内部网
echo convertip('255.255.255.255');
//输出:纯真网络 2006年11月20日IP数据
?>