当前位置:首页 > 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. { 
  8.    if(strpos($start, $val) !== FALSE)//存在需要转义的符号 
  9.    {  
  10.      $escape = '\\'.$val; 
  11.      $start = str_replace($val, $escape, $start); 
  12.    } 
  13.    if(strpos($end, $val) !== FALSE)//存在需要转义的符号 
  14.    {  
  15.      $escape = '\\'.$val; 
  16.      $end = str_replace($val, $escape, $end); 
  17.    } 
  18. } 
  19. /*---------------------------------- 
  20. * 正则解析出【没有子循环】的【循环】 
  21. * 【没有子循环】:不包含循环开始标记 
  22. * 【循环】:被循环标记包含(开始标记、结束标记) 
  23. * ---------------------------------*/ 
  24. //$pattern = '/\(crm((?!\(crm).)+crm\)/U'; 
  25. $pattern = '/'.$start.'((?!'.$start.').)+'.$end.'/U'; 
  26. preg_match_all($pattern, $str, $matches); 
  27. echo "<pre>"; 
  28. print_r($matches); 
  29. echo "</pre>"; 

运行结果:

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

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

分享到: