程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> preg_match正則匹配的字符串

preg_match正則匹配的字符串

編輯:關於PHP編程

preg_match正則匹配的字符串中會出現一些問題,下面我來給大家介紹一下怎麼來解決長字符串時出現錯誤觀點的解決辦法。

preg_match_all正則匹配字符串所有連接地址

 代碼如下 復制代碼

$str ='<a href="http://www.a.com/2010/11-15/5.html">4</a>
  <a href="http://www.b.com/2010/11-15/6.html">5</a>
  <a href="http://www.b.com/2010/11-15/1.html">6</a>
  ';

$ymd=date("y")."/".date("m-d");
$b = preg_match_all('/<a href="(.*?)com/'.$ymd.'(.*?)html">(.*?)</a>/',$a,$c,preg_set_order);


但是用preg_match正則提取目標內容,死活有問題,

代碼測得死去活來。
後來發現“pcre.backtrack_limit ”的值默認只設了100000。

解決辦法:

 代碼如下 復制代碼


ini_set(‘pcre.backtrack_limit’, 999999999);


注:這個參數在php 5.2.0版本之後可用。

另外說說關於:pcre.recursion_limit
pcre.recursion_limit是PCRE的遞歸限制,這個項如果設很大的值,會消耗所有進程的可用堆棧,最後導致PHP崩潰。
也可以通過修改配置來限制

 代碼如下 復制代碼

ini_set(‘pcre.recursion_limit’, 99999);

實際項目應用中,最好也對內存進行限定設置:

 代碼如下 復制代碼

ini_set(‘memory_limit’, ’64M’);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved