当前位置:首页 > php > 正文内容

php中preg_match_all只能匹配100000字节的限制

phpmianshi3个月前 (03-11)php198

背景

用preg_match_all匹配时,偶尔会匹配失败,只能匹配到一部分符合的数据,代码如下:

//获取html文本中的a标签,然后获取 标签 <>之间的内容
function get_tag_from_html($content)
{
    $pattern = "/(<a(.*)>(.*)<\/a>)|(<.*?>)/";
    preg_match_all($pattern, htmlspecialchars_decode($content), $match);
    $imgs = isset($match[0]) ? $match[0] : [];
    return $imgs;
}

用正则从字符串中提取内容失败,反复检查字符串和正则表达式,都没有问题。后来发现失败的情况是字符串富文本特别长的问题,因此怀疑是不是preg_match也有字符串长度限制!

preg_match、preg_match_all都会有这种情况。


解决方法

1、ini_set('pcre.backtrack_limit', 1000000); //默认的只有100000
2、修改 php.ini 的pcre.backtrack_limit参数,使之支持更大的字符串。加入配置:pcre.backtrack_limit=-1


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

PHP内核分析之生命周期五个阶段(四)

一、模块初始化阶段我们先来看一下该阶段的每个函数的作用。1.1、sapi_initialize_request_empty函数// main/SAPI.c SAPI_API vo...

PHP中命名空间概述

(PHP 5 >= 5.3.0, PHP 7)什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的...

lumen项目集成laravelS后sentry无法上报的问题

背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目laravelS github : https://github.com/...

php中autoload机制详解

背景PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一...

PHP内核分析之GDB使用(一)

1.PHP源码下载和安装https://github.com/php/php-src/releases$ ./configure --prefix=/usr/local/php7&...

通过 PHP OPcache 让你的 Laravel 应用运行速度飞起来

Laravel 优化介绍:https://segmentfault.com/a/11900000115690121.缓存配置信息 php artisan config:cache2.缓存路由信息 ph...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。