PHP正则解析多重循环模板示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-10-05 13:59:55 浏览: 评论:0
这篇文章主要介绍了PHP正则解析多重循环模板,结合实例形式分析了php基于正则的循环遍历与解析相关操作技巧,需要的朋友可以参考下。
本文实例讲述了PHP正则解析多重循环模板,分享给大家供大家参考,具体如下:
- $str = "客户您好,为您推荐以下项目:(crm{项目2:项目名称} (crm{项目3:项目名称}crm) crm)以及(crm{项目1:项目名称}crm)";
- $start = '(crm'; //循环开始标记
- $end = 'crm)'; //循环结束标记
- //循环标记,需要转移的符号,前面需要加入转义符 '\'
- $need_escape = array('^', '$', '(', ')', '.', '[', ']', '|', '*', '?', '+', '/', '{', '}');
- foreach($need_escape as $val)
- {
- if(strpos($start, $val) !== FALSE)//存在需要转义的符号
- {
- $escape = '\\'.$val;
- $start = str_replace($val, $escape, $start);
- }
- if(strpos($end, $val) !== FALSE)//存在需要转义的符号
- {
- $escape = '\\'.$val;
- $end = str_replace($val, $escape, $end);
- }
- }
- /*----------------------------------
- * 正则解析出【没有子循环】的【循环】
- * 【没有子循环】:不包含循环开始标记
- * 【循环】:被循环标记包含(开始标记、结束标记)
- * ---------------------------------*/
- //$pattern = '/\(crm((?!\(crm).)+crm\)/U';
- $pattern = '/'.$start.'((?!'.$start.').)+'.$end.'/U';
- preg_match_all($pattern, $str, $matches);
- echo "<pre>";
- print_r($matches);
- echo "</pre>";
运行结果:
- Array
- (
- [0] => Array
- (
- [0] => (crm{项目3:项目名称}crm)
- [1] => (crm{项目1:项目名称}crm)
- )
- [1] => Array
- (
- [0] => }
- [1] => }
- )
- )
Tags: PHP正则解析 PHP多重循环
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)