• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

<?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个



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


?>


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
phpstorm不安装apache就可以本地测试PHP发布时间:2022-07-10
下一篇:
phpheaderutf8发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap