栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

何时使用strtr vs str_replace?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时使用strtr vs str_replace?

第一个区别:

之间不同的行为的一个有趣的例子

strtr
,并
str_replace
在PHP手册的注释部分:

<?php$arrFrom = array("1","2","3","B");$arrTo = array("A","B","C","D");$word = "ZBB2";echo str_replace($arrFrom, $arrTo, $word);?>
  • 结果是:“ ZDDB”
  • 但是,此返回:“ ZDDD”(因为根据我们的数组,B = D)

要使此工作有效,请改用“ strtr”:

<?php$arr = array("1" => "A","2" => "B","3" => "C","B" => "D");$word = "ZBB2";echo strtr($word,$arr);?>
  • 这将返回:“ ZDDB”

这意味着这

str_replace
是一种更具全局性的替换方法,而
strtr
只是简单地逐个转换字符。


另一个区别:

给定以下代码(摘自PHP字符串替换速度比较):

<?php$text = "PHP: Hypertext Preprocessor";$text_strtr = strtr($text    , array("PHP" => "PHP: Hypertext Preprocessor"        , "PHP: Hypertext Preprocessor" => "PHP"));$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor")    , array("PHP: Hypertext Preprocessor", "PHP")    , $text);var_dump($text_strtr);var_dump($text_str_replace);?>

结果文本行将是:

字符串(3)“ PHP”
字符串(27)“ PHP:超文本预处理器”


主要说明:

发生这种情况是因为:

  • strtr :按长度降序对参数进行排序,因此:

    1. 它会给最大的那个“更重要”,然后,由于主题文本本身就是替换数组的最大键,因此它被翻译了。
    2. 因为已替换了主题文本的所有字符,所以该过程到此结束。
    3. str_replace :它按定义键的顺序工作,因此:

    4. 它在主题文本中找到键“ PHP”,并将其替换为:“ PHP:超文本预处理器”,其结果如下:

“ PHP:超文本预处理器:超文本预处理器”。

2. 然后在上一步的结果文本中找到下一个键:“ PHP:超文本预处理器”,因此将其替换为“ PHP”,其结果为:

“ PHP:超文本预处理器”。

3. 没有更多要查找的键,因此替换到此结束。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号