首页 > 后端开发 > php教程 > PHP正则表达式的匹配

PHP正则表达式的匹配

WBOY
发布: 2016-06-23 13:39:07
原创
1399 人浏览过

今天主要的任务就是对新闻、研究报告等咨询的最近上传时间和本地的时间进行对比,比较一下是否超过1个小时,然后我对此进行了php的编程

刚开始,我本来以为主页中就有所需要处理的文字的信息,但是我找了好久就是没有发现所要查找的文字的信息,刚开始的时候我并没有发现然后一直在那傻傻地用正则表达式处理html的源代码,后来我发现原来是我自己的问题,原来html源代码中并不包含新闻的代码。然后我就用chrome对页面进行查找,终于找到了新闻页面来源的url。然后对url进行处理。

在对url进行处理的时候,我就直接用正则表达式处理,可是在处理的时候出现了各种各样的问题。首先时间字符串的长度随着时间的变化可能会变得不一样,所以一开始我并不知道怎么去处理,然后尝试了好久,后来,我尝试用.*的方式对文字进行匹配,可是因为在php中默认采用的是贪婪匹配,所以一匹配就是匹配所有的东西,然后我就对此进行搜索,查找解决的方法,找了很久都不能找到。

后来,我问了一下我的一个同学,他和我说了正则表达式默认是采用贪婪匹配的方式,而可以改变模式为非贪婪匹配就可以解决这个问题。

打个比方说,有一段html:<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>sdc</div>。我想通过preg_match_all利用规则<div>\s*<br>将<div>asdef<em>ccda</em>aae<br>匹配出来,但是PHP好像并没有非贪婪模式的选项,导致匹配出来的是内容是<div>asdef<em>ccda</em>aae<br>sdc</div>
<div>asdef<em>dfge</em>,因为贪婪模式匹配到了后面的<br>了  <pre name="code" class="sycode">/正则/U 参数U,用书上的原话是,不再贪婪
登录后复制

然后我终于解决了问题

<?php /*判断最近更新时间是否大于一个小时函数*/function limittimeindex($url){	$info=file_get_contents($url);/*获取url的页面*/	preg_match('/date.*\",/U',substr($info,0),$m,PREG_OFFSET_CAPTURE);/*正则匹配字符串*/	$time=substr($m[0][0],7,-2);/*获取最新的网页更新时间*/	$systime=date("Y-m-d H:i:s");/*获取系统时间*/	if(strtotime($systime)-strtotime($time)>=3600){/*比较系统时间是否大于最近更新时间1小时,如果是则错误,如果不是则正确*/		echo "this is false<br>";	}	else{		echo "this is true<br>";	}	echo $time,"<br>";	echo $systime;}echo "
登录后复制
";if(isset($_POST['url']) && $_POST['url']!=''){ $url2=$_POST['url']; limittimeindex($url2);}?>

http://zhidao.baidu.com/question/110658951.html?qq-pf-to=pcqq.c2c

相关标签:
来源:php.cn
上一篇:PHP如何操作一次数据库,让某个表一个字段递减一次 下一篇:问个基础问题,关于上传文件
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
相关专题
更多>
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板