• 正则解析多重循环模板


      $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>";
  • 相关阅读:
    实现发送邮件
    c#操作sqlite(包含中文支持)
    C# & SQLite
    卸载impala
    kudu集成impala
    Kudu的卸载(cdh)
    Kudu的集群安装(1.6.0-cdh5.14.0)
    ELK日志平台搭建
    logstash之OutPut插件
    logstash之Filter插件
  • 原文地址:https://www.cnblogs.com/whoamme/p/2652152.html
Copyright © 2020-2023  润新知