热线:18981385370  QQ:158418537  设为首页 | 加入收藏 
技术文章

PHP模板引擎正则表达式技巧

发布者::中国风网站设计   发布时间: :2011-06-10 17:56 浏览次数: :

不管用什么语言开发,我们有时候都会遇到这样一种情况,那就是一个小问题花费几天时间才能解决,这不,昨天遇到PHP模板引擎正则表达式的问题,花了很多时间。

基于正则表达式替换的模板引擎很容易遇上正则表达式最大回溯/递归的限制。

惰性匹配并不可怕,正常情况下模板并不会不够用,往往不会超出限制,discuz的模板引擎就大量使用了。但是因此而不去注意、不去学习,则容易书写错误并遇上问题。

当preg_*返回的是null的时候则要注意了,判断函数是is_null.

出错并不可怕,但是最好把错误都完整的输出,这样调试就很容易了。

除了输出出错原因,还要输出匹配的文本和使用的正则,这样就很容易调试了。

PHP代码

  1. <?php   
  2. if (is_null($tmp)){   
  3.     $error_code = preg_last_error();   
  4.     switch($error_code){   
  5.         case PREG_NO_ERROR :   
  6.             echo 'PREG_NO_ERROR';   
  7.             break;   
  8.         case PREG_INTERNAL_ERROR:   
  9.             echo 'PREG_INTERNAL_ERROR';   
  10.             break;   
  11.         case PREG_BACKTRACK_LIMIT_ERROR:   
  12.             echo 'PREG_BACKTRACK_LIMIT_ERROR';   
  13.             break;   
  14.         case PREG_RECURSION_LIMIT_ERROR:   
  15.             echo 'PREG_RECURSION_LIMIT_ERROR';   
  16.             break;   
  17.         case PREG_BAD_UTF8_ERROR:   
  18.             echo 'PREG_BAD_UTF8_ERROR';   
  19.             break;   
  20.         case PREG_BAD_UTF8_OFFSET_ERROR:   
  21.             echo 'PREG_BAD_UTF8_OFFSET_ERROR';   
  22.             break;   
  23.         default:   
  24.             echo 'UNKNOW ERROR';   
  25.     }   
  26.     exit;   
  27. }  

中国风网站建设,专注于中国企业信息化推广! 对人以诚信,人不欺我;对事以诚信,事无不成
中国风设计工作室
电话:18981385370 QQ:158418537
Emial:baikdmia@163.com 网址:www.zgf88.com(中国风发发)
Copyright © ZGF.ALL RIGHTS RESERVED 蜀ICP备09036629号 版权所有
诚信为首  品质保证