PHP正则表达式的匹配
来源:程序员人生 发布时间:2015-03-12 09:12:48 阅读次数:2796次
今天主要的任务就是对新闻、研究报告等咨询的最近上传时间和本地的时间进行对照,比较1下是不是超过1个小时,然后我对此进行了php的编程
刚开始,我本来以为主页中就有所需要处理的文字的信息,但是我找了好久就是没有发现所要查找的文字的信息,刚开始的时候我并没有发现然后1直在那傻傻地用正则表达式处理html的源代码,后来我发现原来是我自己的问题,原来html源代码中其实不包括新闻的代码。然后我就用chrome对页面进行查找,终究找到了新闻页面来源的url。然后对url进行处理。
在对url进行处理的时候,我就直接用正则表达式处理,可是在处理的时候出现了各种各样的问题。首先时间字符串的长度随着时间的变化可能会变得不1样,所以1开始我其实不知道怎样去处理,然后尝试了好久,后来,我尝试用.*的方式对文字进行匹配,可是由于在php中默许采取的是贪婪匹配,所以1匹配就是匹配所有的东西,然后我就对此进行搜索,查找解决的方法,找了很久都不能找到。
后来,我问了1下我的1个同学,他和我说了正则表达式默许是采取贪婪匹配的方式,而可以改变模式为非贪婪匹配就能够解决这个问题。
打个比方说,有1段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>了
然后我终究解决了问题
<?php
/*判断最近更新时间是不是大于1个小时函数*/
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,⑵);/*获得最新的网页更新时间*/
$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 "<form method='POST' action=''>
<input type='text' name='url' value=''>
<input type='submit' value='submit'>
</form>";
if(isset($_POST['url']) && $_POST['url']!=''){
$url2=$_POST['url'];
limittimeindex($url2);
}
?>
http://zhidao.baidu.com/question/110658951.html?qq-pf-to=pcqq.c2c
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠