php 小偷程序,preg_match正则翻译标签,请大家帮忙。
1$ref="http://tq121.weather.com.cn/icbc/detail.php";2$fp=fopen($ref,'r');3if($fp){4$c...
1 $ref="http://tq121.weather.com.cn/icbc/detail.php"; 2 $fp=fopen($ref,'r'); 3 if($fp){ 4 $contes=file_get_contents($ref); 5 6 7 if (preg_match('/<img src=\"images/20080821.gif\" width=\"480\" height=\"55\" border=\"0\"></a></td>(.*)<td width=\"21\" valign=\"top\"> </td>/',$contes,$reg)) { print_r($reg); $regs[1]=str_replace("src=\"../images/","src=\"http://weather.tq121.com.cn/images/",$regs[1]); echo $regs[1]; } else echo '出错了'; } else echo '没有读到文件'; 刚开始报错: Warning: preg_match() [function.preg-match]: Unknown modifier '2' in D:\Program Files\Zend\Apache2\htdocs\PHP100\thiefProgram\newfile.php on line 7 出错了 修改成这样了 if (preg_match('/<img src=\"images\/20080821.gif\" width=\"480\" height=\"55\" border=\"0\"><\/a><\/td>(.*)<td width=\"21\" valign=\"top\"> <\/td>/',$contes,$reg)) { 报错: array();
展开
1个回答
展开全部
“出错了” 说明没偷到数据,
用这个应该不报错了
if (preg_match('/<img src="images\/20080821.gif" width="480" height="55" border="0"><\/a><\/td>(.*)<td width="21" valign="top"> <\/td>/',$contes,$reg)) {
照此正则表达式去匹配那个网址也是偷不到数据的。
可能原因:http://tq121.weather.com.cn/icbc/detail.php 的HTML结构已经更新了
用这个应该不报错了
if (preg_match('/<img src="images\/20080821.gif" width="480" height="55" border="0"><\/a><\/td>(.*)<td width="21" valign="top"> <\/td>/',$contes,$reg)) {
照此正则表达式去匹配那个网址也是偷不到数据的。
可能原因:http://tq121.weather.com.cn/icbc/detail.php 的HTML结构已经更新了
追问
你好,我已经试了好几个网站,它们都是:数据多了,就报错,如果数据不多,就没事。如:
www.baidu.com
preg_match('/(.*)/i',$contens,$reg)
结果 $reg[1]="百度一下,你就知道";
这是为什么呢?
追答
网速是一个因素,
还有你的这个'/(.*)/i'正则的效率也不是很高,造成回朔太多,会花上几倍的时间来处理匹配。
像(.*) 贪婪型的正则,你一定要考虑正则的效率。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询