str_replace,strtr,preg_replace区别

php中在字符串的替换模块有3个函数,str_replace(),preg_replace(),以及strtr()。在编程过程中,这三个函数的执行效率有所不同,str_replace()函数比preg_replace()函数执行效率快,而strtr()函数的执行效率又高于str_replace(),所以在编程中建议使用strtr()函数。

str_replace():

str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。

该函数必须遵循下列规则:

如果搜索的字符串是数组,那么它将返回数组。

如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。

如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换

如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。

$url = 'http://www.baidu.com/aaa/bbb/index.html'; 
$arr1 = ['com.cn','.html']; 
$arr2 = ['.cn','.shtml']; 
$url = str_replace($arr1,$arr2,$url); 

preg_replace():

preg_replace ()用于执行一个正则表达式的搜索和替换,一般很少使用。

echo preg_replace("/[0-9]/","",$str);//去掉所有数字 echo preg_replace("/[a-z]/","",$str); //这样是去掉所有小写字母 echo preg_replace("/[A-Z]/","",$str); //这样是去掉所有大写字母 echo preg_replace("/[a-z,A-Z]/","",$str); //这样是去掉所有字母

strtr():

strtr() 函数转换字符串中特定的字符。

注释:如果 from 和 to 参数的长度不同,则会被格式化为最短的长度。

<?php echo strtr("I Love you","Lo","lO"); ?>

得到的结果是: I lOve yOu

这个结果提醒我们:

1.strtr它是区分大小写的

2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。

再举一个特殊例子,说明这个php的sttr函数的怪异

<?php echo strtr("I Love you","Love",""); ?>

结果是: I Love you

什么也不会改变,所以strtr需要注意的是:

3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。

再次举例strtr函数的另一种情况:

<?php echo strtr("I Loves you","Love","lOvEA"); ?>

结果是: I lOvEs yOu

注意看第三个参数的A,在结果中并没有出现。

4.我不建议用strtr以少换多。

ok,既然这个strtr函数挺麻烦为什么还要用呢?

原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。

5.能用strtr函数的时候一定要用。

那怎么用才舒服?

这就是它的第二种情况:

strtr(string,array)

6.strtr符合意愿的使用方法

<?php 
    $table_change = array('you'=>'her sister'); 
    echo strtr("I Love you",$table_change); 
?>

结果为: I Love her sister

7.小技巧:你想到替换什么你就往数组加什么

<?php 
    $table_change = array('you'=>'her sister');
    $table_change += array('Love' => 'hate'); 
    echo strtr("I Love you",$table_change);
?>

结果是: I hate her sister

谢谢,ALL!

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

star_xing123

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者