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

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

phpmianshi6个月前 (03-11)php382

背景

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

相关文章

PHP7的垃圾回收机制

PHP7的垃圾回收机制

垃圾回收机制垃圾回收机制是一种动态存储分配方案。它会自动释放程序不再需要的已分配的内存块。 自动回收内存的过程叫垃圾收集。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻...

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

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

a标签跨域下载文件,解决download失效问题

背景a标签中download属性可以更改下载文件的文件名。但是如果是跨域的话,download属性就会失效。解决方案一<a onclick="downloadFile(...

DAL、DAO、ORM、Active Record详解

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

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

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

php-fpm的优雅重启关闭

PHP 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:m...

发表评论

访客

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