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

解释:字符串比对解析并取代。

语法: mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

返回值: 混合类型资料

函数种类: 资料处理

内容说明: 本函数以 pattern 的规则来解析比对字符串 subject,欲取而代之的字符串为参数 replacement。返回值为混合类型资料,为取代后的字符串结果。

<?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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值