Php正则表达式的应用———提取某网站中最新发表的代理 ip 地址
正则表达式的功能是非常强大的,主要三方面应用。1. 判断指定的字符串是否具有指定的格式
2.查找具有指定格式的字符串
3. 将具有指定格式的字符串替换为另一种格式
本文主要利用php 正则表达式来提取网站发表的代理 ip 地址,并转换为指定格式,保存为 txt 文档。然后添加到代理猎手软件中,验证成功,我们就能使用代理 ip 了, O( ∩ _ ∩ )O~ 。再不怕网友知道你的真实 ip 地址了。增加了安全性,还能恶搞。(注:请勿触犯法律)
本程序选择发表代理ip 地址的网址为: http://www.sooip.cn 、。感谢他们无私的奉献,值得我们表扬,值得我们浏览。
Php代码如下:
<?php
/**
* @ Author:朱南天
*Date: 2009-06-24
**/
$filename="http://www.sooip.cn/Article_search.asp";
$fileinfo=file_get_contents($filename);
$fileinfo=strtolower($fileinfo);
$fileinfo=strstr($fileinfo,"1.<a");
$infoarr=explode("5.<a",$fileinfo);
$fileinfo=$infoarr[0];
if(!preg_match_all('/href="(.*?)"/',$fileinfo,$id))
{
preg_match_all('/href=/'(.*?)/'/',$fileinfo,$id); //获取文章的地址
}
$idend=str_replace("http://www.sooip.cn/","",$id[1]);
/*将获得地址统一,例如获得有的是 http://www.sooip.cn/Article_Show.asp?ArticleID=3478 ,有的是 Article_Show.asp?ArticleID=3478 */
foreach($idend as $i)
{
$fileinfonew=file_get_contents('http://www.sooip.cn/'.$i);
$fileinfonew=str_replace(' ','',$fileinfonew);
preg_match('/title>(.*)</',$fileinfonew,$filename);
//提取网页的标题,作为保存文件的文件名
preg_match_all('//d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}/s{1,}/d+/',$fileinfonew,$ip);
/* 关键所在,匹配 ip 地址及端口 */
$ipnew=preg_replace('//r/n/','',$ip[0]);
$ipnew=preg_replace('//s{1,}/',':',$ipnew);
//转换为指定格式,形如 xxx.xxx.xxx.xxx :端口
$strinfo=join("/r/n",$ipnew); //添加 txt 中换行符
$txtfilename=str_replace(array('/','//','|',':','?','<','>','"','*')," ",$filename[1]);
/*
排除 文件名中不容许出现的字符,如 / / : * ? , < > |
*/
file_put_contents("$txtfilename.txt",$strinfo); //写入文件
}
?>
注:1. 本程序有些依赖网页源代码的格式与内容,若网页有所改变,该程序可能有些问题。
2.本程序中有些是不是必需的,如提取网页标题作为保存文件文件名。读者可另设简单的名字,简化程序。
3.读者可任意复制,转载时要注明转载