php函数之strtr和str_replace的用法详解以及效率分析

PHP中主要用strtr()和str_repalce()这两个函数替换字符串和数组,但你们都知道他们这两个函数的区别和用法吗?有不少文章在说使用strtr函数比str_replace快4倍,那为什么很多时候都在用str_replace,到底应该使用哪个函数呢?

一. str_repalce()用法

str_replace(find,replace,string,count)
find:规定要查找的字符串或数组;
replace:被用来替换的字符串或数组;
string:被查询的字符串或数组;
count:可选,替换的次数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<?php

  //实例一:字符串替换字符串

  $str1 = str_replace("red","black","red green yellow pink purple");

  echo $str1//输出结果为black green yellow pink purple

  echo "<br>";

  //实例二:数组的键值用字符串替换

  $arr = array("blue","red","green","yellow");

  $str1 = str_replace("red","pink",$arr,$count);

  print_r($str1);

  //输出结果

  //Array ( [0] => blue [1] => pink [2] => green [3] => yellow )

  echo "<br>" . $count; //输出替换次数1

  //实例三:数组替换数组,一一映射替换

  $arr1 = array("banana","orange");

  $arr2 = array("pitaya","tomato");

  $con_arr = array("apple","orange","banana","grape");

  $con_rep = str_replace($arr1,$arr2,$con_arr,$count1);

  print_r($con_rep);

  //输出结果

  // Array ( [0] => apple [1] => tomato [2] => pitaya [3] => grape )

  echo "<br>" . $count1; //输出替换次数2

  //实例四:如$search为数组,$replace为字符串时

  $search = array("banana","grape");

  $replace = "tomato";

  $arr = array("banana","apple","orange","grape");

  $new_arr = str_replace($search,$replace,$arr,$count2);

  print_r($new_arr);

  //输出结果

  //Array ( [0] => tomato [1] => apple [2] => orange [3] => tomato )

  echo "<br>" . $count2; //输出替换次数2

?>

二. strtr()用法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

    //用法一:strtr(string,from,to)

    echo strtr("I Love you","Lo","lO");

    /*输出结果:

    I lOve yOu

    you中的o被替换了,很诡异,要注意可能;

    这种用法也不能被替换为空,不生效;

    不推荐使用该方法*/

    //用法二:strtr(string,array)

    $arr = array("Hello" => "Hi", "world" => "earth");

    echo strtr("Hello world",$arr);

    /*输出结果:

    Hi earth*/

?>

三. 效率对比

笔者使用apache环境和nginx环境做了测试:5.6版本 str_replace 比 strtr 平均效率高4倍,7.1版本效率基本相同。

四. 总结

使用strtr会出现一些不可控的错误,strtr被查询替换的只能是字符串,而且str_replace函数比strtr效率高、速度快,因此推荐使用str_replace函数替换字符串或数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jh035

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值