PHPRegex的匹配

來源:互聯網
上載者:User

PHPRegex的匹配

今天主要的任務就是對新聞、研究報告等諮詢的最近上傳時間和本地的時間進行對比,比較一下是否超過1個小時,然後我對此進行了php的編程

剛開始,我本來以為首頁中就有所需要處理的文字的資訊,但是我找了好久就是沒有發現所要尋找的文字的資訊,剛開始的時候我並沒有發現然後一直在那傻傻地用Regex處理html的原始碼,後來我發現原來是我自己的問題,原來html原始碼中並不包含新聞的代碼。然後我就用chrome對頁面進行尋找,終於找到了新聞頁面來源的url。然後對url進行處理。

在對url進行處理的時候,我就直接用Regex處理,可是在處理的時候出現了各種各樣的問題。首先時間字串的長度隨著時間的變化可能會變得不一樣,所以一開始我並不知道怎麼去處理,然後嘗試了好久,後來,我嘗試用.*的方式對文字進行匹配,可是因為在php中預設採用的是貪婪匹配,所以一匹配就是匹配所有的東西,然後我就對此進行搜尋,尋找解決的方法,找了很久都不能找到。

後來,我問了一下我的一個同學,他和我說了Regex預設是採用貪婪匹配的方式,而可以改變模式為非貪婪匹配就可以解決這個問題。

 

打個比方說,有一段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>了
/正則/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 "<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);}?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.