• PHP之preg_replace()与ereg_replace()正则匹配比较讲解


    <?php

    //preg_replace()和ereg_replace()函数的使用的比较

    // -------preg_replace()--------------------------

    //1.进行字符串的查找的替换

             $str         = "daoyu shi ge hao hai zi 5555";

             $pattern     = "/s/";           //如果将变量定义为$pattern_1会出错

             $str               = preg_replace($pattern,'-',$str);

             echo $str."<br>";

    /*打印:

             daoyu-shi-ge-hao-hai-zi-5555

    */

    //2.对字符串的逆向引用

    //方法一

             $pat         = "/(w+)-(w+)-(w+)-(w+)-(w+)-(w+)-(d+)/i";

             $str         =preg_replace($pat,"$1",$str);

             echo $str."<br>";

    /*打印:

             daoyu

    */

    //注意:如果是下面这种形式你会发现匹配的是:zi- 所以可以这样认为在有次数的{6}的情况下,他($1)匹配的是最后一次

             $pat         = "/((w+)-){6}(d+)/i";

             $str         =preg_replace($pat,"$1",$str);

             echo $str."<br>";

    /*打印:

             zi-

    */



    //方法二

             $str         = "daoyu-shi-ge-hao-hai-zi-5555";

             $pat         = "/(w+)-(w+)-(w+)-(w+)-(w+)-(w+)-(d+)/i";        

             $str         =preg_replace($pat,"\1",$str);

             echo $str."<br>";

    /*打印:        

             daoyu

    */

    //注意:当正则写成$pat= "/((w+)-){6}(d+)/i";时和上面的情况一样

    //3 当参数是数组的情况(用下手册的例子)

             $string = "The quick brown fox jumped over the lazy dog.";



             $patterns[0] = "/quick/";

             $patterns[1] = "/brown/";

             $patterns[2] = "/fox/";



             $replacements[2] = "bear";

             $replacements[1] = "black";

             $replacements[0] = "slow";



             print preg_replace($patterns, $replacements, $string)."<br>";

    /*打印

             The bear black slow jumped over the lazy dog.

    */

    //或许你已经发现了,他是按“将以其键名在数组中出现的顺序来进行处理。这不一定和索引的数字顺序相同”按我的理解就是在按“写”的顺序而这并不一定是//索引的顺序(书册上还有还有ksort()后的例子,时间关系就不说了,有兴趣的兄弟可以自己找着看下)



    //好preg_replace()就扯到着,开是扯下一个ereg_replace()

    //---------------------ereg_replace()------------------



    //1.进行字符串的查找的替换

             $str         = "daoyu shi ge hao hai zi 5555";

             $pattern     = "[a-zA-Z]+";           //如果写成$pattern= "/[a-zA-Z]+/"; 将不做任何替换也就是说这里不能用正则“/”(可能就是着两个函数的第一个区别 :))

             $str               = ereg_replace($pattern,'~',$str);

             echo $str."<br>";

    /*打印

             ~ ~ ~ ~ ~ ~ 5555

    */

    //2.对字符串的逆向引用

    //在用下书册上的例子

             $string = "This is a test";

    //echo ereg_replace("( )is", "\1was", $string); //“\1”匹配”(空格)is“ 这部分的空格,换句话说就是”替换为数字表示的的第几个括号内//的子串“



             echo ereg_replace("(( )is)", "\2was", $string)."<br>";

    /*打印

             This was a test

    */



    $string = "The quick brown fox jumped over the lazy dog.";



             $patterns[0] = "/quick/";

             $patterns[1] = "/brown/";

             $patterns[2] = "/fox/";



             $replacements[2] = "bear";

             $replacements[1] = "black";

             $replacements[0] = "slow";



             print ereg_replace($patterns, $replacements, $string)."<br>";

    //总结

    //1 preg_replace()里面的正则可以写成型如:"/..../"而ereg_replace()里面的正则需写成型如".....";

    //2 preg_replace()能操作数组,而ereg_replace()不可以

    //3在逆向引用用preg_replace()可使用0-99个,而ereg_replace()最多为9个



    //在使用过程中感觉两者的区别不是很大,在功能上也比较相似..


    ?>

  • 相关阅读:
    bootstrap treevie只展开一个节点,关闭其他节点
    Java后端校验-使用hibernate-validator校验JavaBean
    js生成Excel文件
    Databus&canal对比
    KVM安装配置笔记
    机器学习之数学基础一导数
    机器学习-线性回归
    机器学习之数学基础一统计
    Leader与Boss,技术leader与管理者
    php递归获取无限分类菜单
  • 原文地址:https://www.cnblogs.com/milantgh/p/3677391.html
Copyright © 2020-2023  润新知