当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP正则解析多重循环模板示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-05 13:59:55 浏览: 评论:0 

这篇文章主要介绍了PHP正则解析多重循环模板,结合实例形式分析了php基于正则的循环遍历与解析相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP正则解析多重循环模板,分享给大家供大家参考,具体如下:

  1. $str = "客户您好,为您推荐以下项目:(crm{项目2:项目名称} (crm{项目3:项目名称}crm)  crm)以及(crm{项目1:项目名称}crm)"
  2. $start = '(crm'//循环开始标记 
  3. $end  = 'crm)'//循环结束标记    
  4. //循环标记,需要转移的符号,前面需要加入转义符 '\' 
  5. $need_escape = array('^''$''('')''.''['']''|''*''?''+''/''{''}'); 
  6. foreach($need_escape as $val
  7.    if(strpos($start$val) !== FALSE)//存在需要转义的符号 
  8.    {  
  9.      $escape = '\\'.$val
  10.      $start = str_replace($val$escape$start); 
  11.    } 
  12.    if(strpos($end$val) !== FALSE)//存在需要转义的符号 
  13.    {  
  14.      $escape = '\\'.$val
  15.      $end = str_replace($val$escape$end); 
  16.    } 
  17. /*---------------------------------- 
  18. * 正则解析出【没有子循环】的【循环】 
  19. * 【没有子循环】:不包含循环开始标记 
  20. * 【循环】:被循环标记包含(开始标记、结束标记) 
  21. * ---------------------------------*/ 
  22. //$pattern = '/\(crm((?!\(crm).)+crm\)/U'; 
  23. $pattern = '/'.$start.'((?!'.$start.').)+'.$end.'/U'
  24. preg_match_all($pattern$str$matches); 
  25. echo "<pre>"
  26. print_r($matches); 
  27. echo "</pre>"

运行结果:

  1. Array 
  2.     [0] => Array 
  3.         ( 
  4.             [0] => (crm{项目3:项目名称}crm) 
  5.             [1] => (crm{项目1:项目名称}crm) 
  6.         ) 
  7.     [1] => Array 
  8.         ( 
  9.             [0] => } 
  10.             [1] => } 
  11.         ) 
  12. )

Tags: PHP正则解析 PHP多重循环

分享到: