国产探花免费观看_亚洲丰满少妇自慰呻吟_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'); , 這樣就比較穩妥妥嘎。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌黎县| 浦北县| 天峻县| 盐城市| 合山市| 金塔县| 藁城市| 准格尔旗| 上高县| 商河县| 岫岩| 青阳县| 安仁县| 班玛县| 海城市| 桂东县| 尉氏县| 蓝山县| 浦北县| 江川县| 汉中市| 腾冲县| 温州市| 康马县| 大邑县| 茌平县| 信丰县| 吉木萨尔县| 伊吾县| 康马县| 张家口市| 汽车| 运城市| 临澧县| 威信县| 靖宇县| 特克斯县| 广安市| 安新县| 巴南区| 江达县|