PHP正则表达式回溯限制突破实例解析是怎样的?

更新于
2026-09-28 20:38:20
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计830个文字,预计阅读时间需要4分钟。

PHP正则表达式回溯限制突破实例解析是怎样的?

目录+ 什么是正则回溯+ 为什么可以利用正则回溯进行遍历+ PHP正则回溯遍历案例一+ PHP正则回溯遍历案例二+ 什么是正则回溯+ 从问题的某一特定状态(初始状态)出发,探索所有可能的路径和状态演变

目录
  • 什么是正则回溯
  • 为什么可以利用正则回溯进行绕过
  • php正则回溯绕过案例一
  • php正则回溯绕过案例二

什么是正则回溯

从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干步,从另一种可能“状态”出发,继续搜索,直到所有的“路径”(状态)都试探过。这种不断“前进”、不断“回溯”寻找解的方法,就称作“回溯法”。本质上就是深度优先搜索算法。其中退到之前的某一步这一过程,我们称为“回溯”。

非贪婪模式回溯过程:

text = "abc"
regex = "ab{1,3}c"

为什么可以利用正则回溯进行绕过

大量的回溯会长时间地占用CPU,从而带来系统性的开销。PHP为了防止正则表达式的拒绝服务攻击(reDOS),给pcre设定了一个回溯次数上限pcre.backtrack_limit。

阅读全文

本文共计830个文字,预计阅读时间需要4分钟。

PHP正则表达式回溯限制突破实例解析是怎样的?

目录+ 什么是正则回溯+ 为什么可以利用正则回溯进行遍历+ PHP正则回溯遍历案例一+ PHP正则回溯遍历案例二+ 什么是正则回溯+ 从问题的某一特定状态(初始状态)出发,探索所有可能的路径和状态演变

目录
  • 什么是正则回溯
  • 为什么可以利用正则回溯进行绕过
  • php正则回溯绕过案例一
  • php正则回溯绕过案例二

什么是正则回溯

从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干步,从另一种可能“状态”出发,继续搜索,直到所有的“路径”(状态)都试探过。这种不断“前进”、不断“回溯”寻找解的方法,就称作“回溯法”。本质上就是深度优先搜索算法。其中退到之前的某一步这一过程,我们称为“回溯”。

非贪婪模式回溯过程:

text = "abc"
regex = "ab{1,3}c"

为什么可以利用正则回溯进行绕过

大量的回溯会长时间地占用CPU,从而带来系统性的开销。PHP为了防止正则表达式的拒绝服务攻击(reDOS),给pcre设定了一个回溯次数上限pcre.backtrack_limit。

阅读全文