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

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

phpmianshi3个月前 (03-11)php201

背景

用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面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

phpstorm2020.3.1最新永久破解方法

phpstorm又更新了,截至目前为止,官网的最新版本为phpstorm2020.3.1,这次phpstorm的更新UI界面就有了很大的变化,主要是添加了对PHP8的支持,具体的可以去官网去了解哈。同...

从0到1搭建TP5.1+Swoole3.5.15环境

安装首先按照Swoole官网说明安装swoole扩展,推荐新手可以直接使用pecl install swoole#会安装最新的稳定版(截至本文发布最新版本是4.0.3版本)或者源码...

php中使用swoole加速lumen项目-laravelS实战

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

PHP对象使用数组形式访问成员变量

PHP中有很多接口类,不过平时都不会怎么用到.一般访问php类的变量都是使用类->变量名进行访问.除了这样还可以实现接口类用数组方式进行访问类["变量名"]需要实现的是Arr...

php-fpm进程数优化

php-fpm进程数优化

CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。CGI(Common Gateway Interface)全称是“通用网关接口”,WEB 服务器与PHP应...

PHP中跨域原理以及解决方案

1.为啥出现跨域在制定Html规则时,为了安全的考虑,一个源的脚本(网页,网站)不能与另一个源的资源进行交互,所以就引发一个词叫做“同源策略”。所谓同源(即指在同一个域),就是两个页面具有相同的协议(...

发表评论

访客

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