今天主要的任務就是對新聞、研究報告等咨詢的最近上傳時間和本地的時間進行對比,比較一下是否超過1個小時,然后我對此進行了php的編程
剛開始,我本來以為主頁中就有所需要處理的文字的信息,但是我找了好久就是沒有發(fā)現(xiàn)所要查找的文字的信息,剛開始的時候我并沒有發(fā)現(xiàn)然后一直在那傻傻地用html' target='_blank'>正則表達式處理html的源代碼,后來我發(fā)現(xiàn)原來是我自己的問題,原來html源代碼中并不包含新聞的代碼。然后我就用chrome對頁面進行查找,終于找到了新聞頁面來源的url。然后對url進行處理。
在對url進行處理的時候,我就直接用正則表達式處理,可是在處理的時候出現(xiàn)了各種各樣的問題。首先時間字符串的長度隨著時間的變化可能會變得不一樣,所以一開始我并不知道怎么去處理,然后嘗試了好久,后來,我嘗試用.*的方式對文字進行匹配,可是因為在php中默認采用的是貪婪匹配,所以一匹配就是匹配所有的東西,然后我就對此進行搜索,查找解決的方法,找了很久都不能找到。
后來,我問了一下我的一個同學,他和我說了正則表達式默認是采用貪婪匹配的方式,而可以改變模式為非貪婪匹配就可以解決這個問題。
打個比方說,有一段html:<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>sdc</div>。我想通過preg_match_all利用規(guī)則<div>s*<br>將<div>asdef<em>ccda</em>aae<br>匹配出來,但是PHP好像并沒有非貪婪模式的選項,導致匹配出來的是內(nèi)容是<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em>,因為貪婪模式匹配到了后面的<br>了
/正則/U 參數(shù)U,用書上的原話是,不再貪婪
然后我終于解決了問題
<?php/*判斷最近更新時間是否大于一個小時函數(shù)*/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);/*獲取最新的網(wǎng)頁更新時間*/ $systime=date("Y-m-d H:i:s");/*獲取系統(tǒng)時間*/ if(strtotime($systime)-strtotime($time)>=3600){/*比較系統(tǒng)時間是否大于最近更新時間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
PHP編程鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選