国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Regex > 正文

解決preg_match匹配過多字符長度的限制的思路分析

2020-03-16 21:09:38
字體:
來源:轉載
供稿:網友
今天在寫采集程序的時候,使用到了preg_match,但是有幾個頁面始終采集不下來。反復看了N遍的正則,沒有發現有問題。于是開始懷疑preg_match是否對匹配的字符串有長度限制
 
 
但是官方的文檔里面沒有說明這一點。 

于是開始測試:將要匹配的字串不斷縮短,直到縮為原來1/5的時候可以正常匹配了,所以更加確定了。 

到google里一搜,終于找到了解決方案:在php.ini中加入(隨便放到哪里,我是直接放第一行的) 

pcre.backtrack_limit=-1 

再次使用preg_match函數測試一下,大概1300多行上萬個字符的字符串也能夠匹配了。 

項目中,用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'); , 這樣就比較穩妥妥嘎。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 房山区| 奉节县| 德化县| 修武县| 奉化市| 昌邑市| 定安县| 长春市| 平湖市| 凌海市| 霍林郭勒市| 华宁县| 桑植县| 恩施市| 绥中县| 青海省| 邛崃市| 山西省| 科技| 信阳市| 台东市| 婺源县| 墨江| 集安市| 孝感市| 太保市| 广宗县| 苍南县| 图们市| 吴川市| 驻马店市| 富宁县| 弥渡县| 贺兰县| 新源县| 乐业县| 遵化市| 韶关市| 马公市| 灯塔市| 寿宁县|