场景:用正则表达式匹配页面内容时(preg_match(‘/(.*)(.*)<\/head>(.*)<\/html>/Uis’,$str)),发现有时能正常匹配,有时不能,可分析页面结构,发现没有变化,唯一变化的是页面大小。
原因:PHP对正则表达式匹配长度是用限制的,用phpinfo可以看到如下
pcre.backtrack_limit 100000 100000
pcre.recursion_limit 100000 100000
发现只有100K,如果是抓Web页面的话肯定不够的,其实只要在php.ini上做相应设置就行了(或者改变这两个值的大小)
pcre.backtrack_limit=-1
pcre.recursion_limit=-1
附说明:
[Pcre]
;Perl兼容正则表达式模块
pcre.backtrack_limit = 100000
; PCRE的最大回溯(backtracking)步数。
pcre.recursion_limit = 100000
; PCRE的最大递归(recursion)深度。
; 如果你将该值设的非常高,将可能耗尽进程的栈空间,导致PHP崩溃。
相关推荐
您可能感兴趣的文章:正则表达式 \w \d 的意义PowerShell中使用正则和ValidateSet验证参数合法性Shell正则表达式之grep、sed、awk实操笔记DW 查找某字符串前的所有字符的正则表达式解决正则表达式\w和\d的疑惑
1. **用户名验证**:通常用户名需要符合一定的规则,比如不能包含特殊字符,长度限制在一定范围内。正则表达式可以确保用户名只包含字母、数字和下划线,并检查其长度是否在允许范围内。 2. **密码验证**:密码强度...
本文将对一系列常用的PHP正则表达式进行汇总和解释,帮助开发者更好地理解和运用这些模式。 #### 1. 数字匹配 - **"^\\d+$"**:匹配由一个或多个数字组成的字符串。 - **"^[0-9]*[1-9][0-9]*$"**:匹配非零的正...
### PHP中常用的正则表达式知识点详解 #### 一、匹配中文字符的正则表达式 **表达式**: `[\u4e00-\u9fa5]` **解释**: 此表达式用于匹配所有中文字符。其中`\u4e00`表示中文的第一个Unicode编码,`\u9fa5`表示最后一...
根据提供的标题、描述以及部分内容,我们可以总结出一系列与正则表达式相关的知识点,这些知识点主要应用于Java、PHP等编程语言中。以下是对这些知识点的详细解释: ### 匹配中文字符 **正则表达式**: `[u4e00-u9fa...
需要注意的是,否定后瞻对前面的模式有长度限制,它必须是固定长度或者有限的非贪婪重复,因为PHP的PCRE引擎(Perl Compatible Regular Expressions)无法有效地处理无限长度的否定后瞻。 在实际应用中,我们需要...
@后点前面长度限制为1-10个字符;点后面的限制为com、cn、com.cn、net。 ##### 2. 构建正则表达式 基于上述规则,我们可以构建以下正则表达式来验证邮件地址: - 用户名的正则表达式:`^[a-zA-Z][0-9a-zA-Z_]{4,...
然而,在使用`preg_match`进行复杂模式匹配时,有时会遇到无法正确提取或匹配到内容的情况,这可能是因为遇到了与字符串长度相关的限制问题。 首先,让我们了解一下`preg_match`函数的基本使用方法。`preg_match`...
继续前进——限制匹配优先的作用范围... 225 实测... 226 全面考查回溯... 228 POSIX NFA需要更多处理... 229 无法匹配时必须进行的工作... 230 看清楚一点... 231 多选结构的代价可能很高... 231 性能测试....
本文主要探讨了如何使用PHP正则表达式来匹配包含中英文、数字以及下划线的字符串,这对于实现用户名验证功能非常有帮助。 在给出的示例中,使用了正则表达式`/[\w\x{4e00}-\x{9fa5}]+/u`来匹配用户名。这里`\w`匹配...
1. **输入格式校验**:除了字数限制,还可以结合正则表达式检查输入格式,如禁止输入特殊字符或邮箱地址等。 2. **实时反馈**:可以使用CSS添加样式变化,如当达到字数限制的90%时,高亮提示用户。 3. **多语言支持*...
文中还提到了有关电子邮箱域名的知识,如国际域名的构成、域名中字母不分大小写、域名长度限制等规则。这些规则是国际互联网域名系统的一部分,定义了有效域名的范围,同时也影响到邮箱地址的有效性。 综上所述,...
30. `^[a-zA-Z][a-zA-Z0-9_]{4,15}$`:用户名匹配,长度限制在5到16个字符之间,首位必须是字母。 31. `(\d{3}-|\d{4}-)?(\d{8}|\d{7})?`:电话号码匹配,考虑了区号和位数的不同情况。 32. `^[1-9]*[1-9][0-9]*$`:...
### PHP中的常用正则表达式知识点 #### 一、数字匹配 **1. 正则表达式:** `^\d+$` - **描述:** 匹配由一个或多个数字(0-9)组成的字符串。 - **应用场景:** 验证用户输入是否全为数字。 **2. 正则表达式:** `^...
本文旨在分析并修正月光博客网站中使用的部分PHP正则表达式中存在的问题,并提供优化建议。 #### 1. 验证是否为中文字符 原表达式: ```php $reg='/[\x-\x]+/u'; ``` **问题**:该表达式中`[\x-\x]`部分明显错误,...