首页 > 语言 > 关键词  > 正则表达式最新资讯  > 正文

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

2011-06-09 09:52 · 稿源:微风实验室,dev.meettea.com

很久没有遇上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. casePREG_NO_ERROR:
  6. echo'PREG_NO_ERROR';
  7. break;
  8. casePREG_INTERNAL_ERROR:
  9. echo'PREG_INTERNAL_ERROR';
  10. break;
  11. casePREG_BACKTRACK_LIMIT_ERROR:
  12. echo'PREG_BACKTRACK_LIMIT_ERROR';
  13. break;
  14. casePREG_RECURSION_LIMIT_ERROR:
  15. echo'PREG_RECURSION_LIMIT_ERROR';
  16. break;
  17. casePREG_BAD_UTF8_ERROR:
  18. echo'PREG_BAD_UTF8_ERROR';
  19. break;
  20. casePREG_BAD_UTF8_OFFSET_ERROR:
  21. echo'PREG_BAD_UTF8_OFFSET_ERROR';
  22. break;
  23. default:
  24. echo'UNKNOWERROR';
  25. }
  26. exit;
  27. }

参考资料

1、2010, Laruence 《深悉正则(pcre)最大回溯/递归限制》

2、2011, PHP中文手册 preg_last_error

(来源:微风实验室

举报

  • 相关推荐
  • 前方突然让路不要得意要警惕!雷军:这驾驶技巧很重要

    今天下午,小米创办人雷军分享了小米精英驾驶高阶驾驶培训的安全驾驶指南。 这份指南介绍了一则驾驶技巧,在车流中行驶,前车突然让路,大概率是因为前方有需要躲避的物体或者人,小心观察前方情况,注意保持前后车距,找准机会变道脱险。雷军强调,这个驾驶技巧很重要。 据了解,小米精英驾驶高阶驾驶培训项目旨在通过系统化教学提升用户的实际驾驶操控能力�

  • 仙乐健康在WAIC开启AI配方引擎战略合作

    2025年7月28日,仙乐健康与记忆张量在2025世界人工智能大会签署战略合作协议。仙乐健康将基于记忆张量的MemOS操作系统构建专用工业大模型基础设施,推动健康产业从标准化制造向个性化服务转型。合作内容包括打造三大核心系统:智能知识中枢PharmaQA、配方生成引擎FormuGenius和需求洞察系统NutriTrend,并共建联合实验室推动个性化营养创新。此次合作标志着营养健康产业与AI技术的深度融合,将提升研发效率,优化全球供应链能力,巩固仙乐健康在全球营养健康食品CDMO领域的领先地位。

  • 小米手表/手环下半年OTA更新计划发布:手表微信应用来了

    今日,小米集团手机部副总裁、可穿戴部总经理张雷发布2025年下半年OTA更新计划,涉及多款小米手表、小米手环、小米耳机,还有最新发布的小米AI眼镜。 下半年OTA更新计划(部分)如下: 手表 REDMI Watch 5系列,预计9月上旬全量推送 支持手表微信应用,社交沟通更及时 REDMI Watch 5 eSIM,预计9月上旬全量推送 支持手表微信应用,社交沟通更及时

  • AI日报:火山引擎发布豆包3.0;通义开源Qwen3非思考模型;谷歌偷偷升级Imagen 4

    【AI日报】栏目聚焦人工智能领域最新动态:1)火山引擎发布豆包系列AI模型升级,包括图像编辑3.0、同声传译2.0等;2)通义千问开源Qwen3-30B模型,支持多语言处理;3)OpenAI推出ChatGPT Study学习助手;4)中国发布HYPIR图像复原大模型;5)谷歌NotebookLM新增视频概览功能;6)谷歌Imagen4图像生成模型升级,性能媲美GPT-4o;7)昆仑万维开源多模态模型Skywork UniPic;8)理想汽车发布首搭VLA大模型的i8纯电SUV;9)谷歌在英国推出AI搜索模式;10)OWL团队开源多智能体协作工具;11)2025年用户增速最快APP榜单显示DeepSeek等AIGC应用表现突出。

  • 拥抱AI变革,点燃算网引擎:2025开放数据中心大会定档

    2025年开放数据中心大会(ODCC)将于9月9-11日在北京国际会议中心举行。作为算力产业年度盛会,本届大会以"拥抱AI变革,点燃算网引擎"为主题,汇聚政产学研各界专家,探讨算力产业前沿趋势。大会将设置十余个分论坛、4000平米展区,展示计算、存储、液冷等创新技术,50+科技巨头将带来核心产品与解决方案。自2014年创办以来,ODCC已发布300余项行业标准,见证并推动了算力产业的高速发展。本届大会将继续发挥桥梁作用,促进数实融合与生态协同,打造创新成果落地的"孵化器"。

  • 老人为乘凉挤满肯德基 街道办回应:店员表示无奈

    近日山东聊城一家肯德基店内,多位老人占座乘凉却不点餐,引发热议。视频显示老人们或聊天打牌,甚至躺椅睡觉。店员表示因天气炎热,老人自发前来纳凉,只能在不影响其他顾客的前提下进行劝说。街道办回应称这是自发行为,店铺有自主经营权,目前主要依靠店员劝导。这一现象既反映了高温下老人对清凉场所的需求,也给商家经营带来困扰,如何平衡二者关系值得思考。

  • 微算法科技(NASDAQ:MLGO)采用分布式哈希表优化区块链索引结构,提高区块链检索效率

    微算科技(NASDAQ:MLGO)采用分布式哈希表(DHT)技术优化区块链索引结构,解决区块链数据存储和检索效率低下的问题。该技术通过哈希函数将数据分散存储在多个节点上,实现快速定位和检索,显著提升查询响应速度。系统具有去中心化、可扩展性强、容错性高等优点,适用于金融、供应链、物联网等多个领域。该创新不仅优化了区块链索引结构,还通过数据去冗余存储策略降低存储成本,同时增强数据安全性和可靠性,为区块链技术在各行业的广泛应用提供了高效解决方案。

  • OPPO K13 Turbo首发疾风散热引擎:史上最强风冷散热技术

    今天下午,OPPO K13 Turbo系列正式亮相,该机首发搭载史上最强手机风冷散热技术OPPO疾风散热引擎,实现手机散热能力的革命性跃迁。 OPPO产品经理介绍,被动散热最强理论值能做到79mA/℃,而OPPO疾风散热引擎散热能力达到92mA/℃,捅破手机散热天花板。 据悉,OPPO K13 Turbo系列创新打造L型风道,垂直进风、喷气出风,有效降低风道风阻,提升总体风量。 它采用13片超薄0.1mm鳍片�

  • 移动、联通、电信三大运营商集体表态:精简套餐、资费透明

    电话套餐资费眼花缭乱、莫名其妙订了新业务,你遇到过这些问题吗? 据央视新闻报道,日前,中国移动、中国联通、中国电信三大运营商承诺将在透明消费、套餐精简等方面采取实质性举措。 中国移动 推出十项服务承诺,其中包括业务订购环节必须得到客户明确同意,办理完成后立即向用户发送告知短信。 变更套餐时,无合约约定变更条件的,48小时内办结;还有用户可�

  • 产业升级“超级引擎”!itc保伦股份分布式“AI边缘计算”助力各行业数智化跨越!

    ITC分布式综合管理系统通过内置AI边缘计算平台,为工矿园区提供智能化解决方案。系统支持50多种场景实时监测分析,覆盖应急指挥、能源、化工等领域,实现异常事件自动识别预警。在应急管理方面,可智能监测灾害防治、安全生产等数据指标;能源行业可识别原油泄漏、静电释放等风险;化工领域能检测未戴安全帽、明火等违规行为。系统通过视频结构化分析、多模态协作等技术,提升园区安全管理和生产效率,助力企业完成数字化到数智化转型。