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

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

phpmianshi7个月前 (03-11)php399

背景

用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对象使用数组形式访问成员变量

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

DAL、DAO、ORM、Active Record详解

模型 Model模型是MVC中的概念,指的是读取数据和改变数据的操作(业务逻辑)。一开始我们直接把和数据库相关的代码放在模型里(sql直接写在代码中),这样就会导致以后的维护相当麻烦。业务逻辑的修改都...

php-fpm backlog参数优化

php-fpm backlog参数优化

一、问题分析       1、分析php-fpm.slow.log发现没有执行慢的地方,然后把目光放到了nginx 与php建立连接的阶段上,使用tcpdump...

composer autoload自动加载性能优化指南

简介composer 提供的 autoload 机制使得我们组织代码和引入新类库非常方便,但是也使项目的性能下降了不少 。composer autoload 慢的主要原因在于来自对 PSR-0 和 P...

PHP红包分配算法

<?php /**  * User: phpmianshi.com   * Date: 2020/3/31 &nbs...

php中的system方法偶尔会出现unable to fork

背景php代码中调用了system方法,执行了shell脚本,一开始运行正常,过一段时间偶尔会出现unable to fork的报错问题原因system调用会fork新的进程,因为每个用户有最大进程数...

发表评论

访客

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