解决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'); , 这样就比较稳妥妥嘎。
相关推荐
-
解决preg_match匹配过多字符长度的限制的思路分析
但是官方的文档里面没有说明这一点. 于是开始测试:将要匹配的字串不断缩短,直到缩为原来1/5的时候可以正常匹配了,所以更加确定了. 到google里一搜,终于找到了解决方案:在php.ini中加入(随便放到哪里,我是直接放第一行的) pcre.backtrack_limit=-1 再次使用preg_match函数测试一下,大概1300多行上万个字符的字符串也能够匹配了. 项目中,用preg_match正则提取目标内容,死活有问题,代码测得死去活来. 后来发现"pcre.backtrack_lim
-
快速解决C# android base-64 字符数组的无效长度问题
解决方法: 在android向C# 后台发送图片的时候,把图片转成字符串发送的时候出现 base-64 字符数组的无效长度 错误应该在传递参数前,使用Replace("+", "%2B"),后台接收后用Replace("%2B", "+"),这样一替换,问题就解决了 以上这篇快速解决C# android base-64 字符数组的无效长度问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
解决MyBatis中模糊搜索使用like匹配带%字符时失效问题
目录 1.问题背景 2.解决方法 2.1.在入参SearchVo上进行特殊符号relpace转换 2.2.使用ESCAPE 2.3.总结 1.问题背景 Mybatis是我们日常项目中经常使用的框架,在项目中我们一般会使用like查询作为模糊匹配字符进行搜索匹配,下面的Mapper.xml是我们使用like在项目中进行模糊匹配的常用方式: <sql id="searchCondition"> <trim prefix="where" prefixOv
-
正则表达式教程之匹配一组字符详解
本文实例讲述了正则表达式教程之匹配一组字符的方法.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明.所有java例子都在JDK1.6.0_13下测试通过. 一.匹配多个字符中的某一个 在上一篇<正则表达式教程之匹配单个字符详解>中的一个匹配以na或sa开头的文本文件例子中,使用的正则表达式是.a.\.txt.如果还有一个文件是cal.txt,那么也将会被匹配到.如
-
收集一些常用的正则表达式(匹配中文字符、匹配双字节字符、匹配HTML标记、匹配空行 and so on~~~)
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番.我将一些常用的表达式收藏在这里,作备忘之用.本贴随时会更新,请持续关注本站. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"a
-
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css&quo
-
匹配任意字符的正则表达式写法
实现代码如下,起初测试正常(后来遇到问题),先来看最初的代码 复制代码 代码如下: var docs = document.body.innerHTML; var links =docs.match(/ed2k.*\|\//gi);//注意这里 使用了点(.)符号匹配任意字符 document.body.innerHTML = ""; for( var link in links){<BR> document.body.innerHTML += links[link]+&q
-
正则表达式教程之匹配单个字符详解
本文实例讲述了正则表达式教程之匹配单个字符.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明.所有java例子都在JDK1.6.0_13下测试通过. java测试代码: /** * 根据正则表达式和要匹配的源文本,输出匹配结果 * @param regex 正则表达式 * @param sourceText 要匹配的源文本 */ public static void
-
iOS中如何判断中英文混合的字符长度
废话不多说,直接给大家贴代码了. 一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法 NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]); //第二种方法 NSLog(@"--second--%ld",[self getToInt:@&
-
C++中可正确获取UTF-8字符长度的函数分享
在C++的char*以及string中,使用的是字节流编码,即sizeof(char) == 1. 也就是说,C++是不区分字符的编码的. 而一个合法UTF8的字符长度可能为1-4位. 现在假设一串输入为UTF8编码,如何能准确的定位到每个UTF8字符的"CharPoint",而不会错误的分割字符呢? 参考这个页面:http://www.nubaria.com/en/blog/?p=289 可以改造出下面的函数: const unsigned char kFirstBitMask =
随机推荐
- AJAX中文乱码PHP中完美解决方法
- jQuery链使用指南
- JavaScript可否多线程? 深入理解JavaScript定时机制
- React组件之间的通信的实例代码
- PHP新手上路(十四)
- C# 设计模式系列教程-组合模式
- android使用PullToRefresh实现下拉刷新和上拉加载
- 基于jQuery实现音乐播放试听列表
- asp之基于adodb.stream的文件操作类
- Linux下独立添加PHP扩展模块mbstring的方法
- 23个超流行的jQuery相册插件整理分享
- ztree简介_动力节点Java学院整理
- jQuery+CSS实现一个侧滑导航菜单代码
- 使用ThinkPHP+Uploadify实现图片上传功能
- php获取'/'传参的值简单方法
- 关于Spring MVC同名参数绑定问题的解决方法
- jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
- C# 基础入门--注释
- 浅析Android手机卫士sim卡绑定
- Activity取消界面切换的默认动画方法(推荐)