• 技术文章 >后端开发 >php教程

    PHP正则解析多重循环模板的介绍

    不言不言2018-06-29 10:12:19原创553
    这篇文章主要介绍了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] => }
    )
    )

    以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

    相关推荐:

    php 判断IP为有效IP地址的方法php实例

    PHP实现的防止跨站和xss攻击代码php技巧

    基于PHP实现的多元线性回归模拟曲线算法php技巧

    以上就是PHP正则解析多重循环模板的介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:浅谈PHP源码三十四:PHP5.3新增加的垃圾回收机制(Garbage Collection) 下一篇:关于CI框架实现递归生成文件路径并重新生成图片的功能介绍
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP如何使用xlswriter进行大数据的导入导出?(详解)• 自动跳转中英文页面_PHP教程• PHP5的XML新特性_PHP教程• php 面试碰到过的问题 在此做下记录_php技巧• php通用防注入程序 推荐_php技巧
    1/1

    PHP中文网