知识大全 模板引擎正则表达式调试小技巧
Posted 知
篇首语:将相本无种,男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 模板引擎正则表达式调试小技巧相关的知识,希望对你有一定的参考价值。
很久没有遇上PHP难题了 这次正则问题占了一点时间 还是老问题最大回溯 递归限制问题 学习透之后其实并不难修改调试有这类问题的正则 主要是以下几点
基于正则表达式替换的模板引擎很容易遇上正则表达式最大回溯/递归的限制
惰性匹配并不可怕 正常情况下模板并不会不够用 往往不会超出限制 discuz的模板引擎就大量使用了 但是因此而不去注意 不去学习 则容易书写错误并遇上问题
当preg_*返回的是null的时候则要注意了 判断函数是is_null
出错并不可怕 但是最好把错误都完整的输出 这样调试就很容易了
除了输出出错原因 还要输出匹配的文本和使用的正则 这样就很容易调试了
PHP代码
- <?php
- if (is_null($tmp))
- $error_code = preg_last_error();
- switch($error_code)
- case PREG_NO_ERROR :
- echo PREG_NO_ERROR ;
- break;
- case PREG_INTERNAL_ERROR:
- echo PREG_INTERNAL_ERROR ;
- break;
- case PREG_BACKTRACK_LIMIT_ERROR:
- echo PREG_BACKTRACK_LIMIT_ERROR ;
- break;
- case PREG_RECURSION_LIMIT_ERROR:
- echo PREG_RECURSION_LIMIT_ERROR ;
- break;
- case PREG_BAD_UTF _ERROR:
- echo PREG_BAD_UTF _ERROR ;
- break;
- case PREG_BAD_UTF _OFFSET_ERROR:
- echo PREG_BAD_UTF _OFFSET_ERROR ;
- break;
- default:
- echo UNKNOW ERROR ;
- exit;
参考资料
Laruence 《深悉正则(pcre)最大回溯/递归限制》
cha138/Article/program/PHP/201311/21289相关参考
Oracle正则表达式小试用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 去除字符串中匹配模式
知识大全 javascript正则表达式容易被忽略的小问题整理
小问题:lastIndex只对exec()和test()方法起作用stringmatch(regexp)是不会影响regexp这个正则的lastIndex属性的具体祥看本文 一中括号[]
什么是模板引擎?说白了就是能够自动替换占位符的替换引擎原理上也就是两个步骤找到》替换但是替换不是简单的替换包括 简单变量替换();复杂变量替换();对象变量替换();键值类型替换();自定义集合
什么是模板引擎?说白了就是能够自动替换占位符的替换引擎原理上也就是两个步骤找到》替换但是替换不是简单的替换包括 简单变量替换(); &n
分享25个顶级PHP模板引擎整理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了找到一个好的
本篇文章是对js中正则表达式的使用进行了详细的分析介绍需要的朋友可以参考下 js中的正则表达式比起C#中的正则表达式要弱很多但基本够用了定义正则表达式关于验证的三个这则表达式方法正则表达
PHP正则匹配中文字母数字正则表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 方法一 代
C#正则表达式编程(四):正则表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 提供了功能强
三括号或匹配 在正则表达式中由于[]号只能做单个元素的匹配这样会限制正则表达式的作用如何做到多个元素的匹配呢?用()实现 ()可以进行多个元素的匹配例如:t(a|e|i|o|oo)n|在正则表
PHP和正则表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一个正则表达式是一个特定的格式