查看: 7554|回复: 0
打印 上一主题 下一主题

模板引擎正则表达式调试小技巧

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-9 15:38:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
很久没有遇上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_UTF8_ERROR:   
            echo 'PREG_BAD_UTF8_ERROR';   
            break;   
        case PREG_BAD_UTF8_OFFSET_ERROR:   
            echo 'PREG_BAD_UTF8_OFFSET_ERROR';   
            break;   
        default:   
            echo 'UNKNOW ERROR';   
    }   
    exit;   
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表