Home  >  Article  >  Backend Development  >  PHP中str_repalce()和strtr()有哪些区别?

PHP中str_repalce()和strtr()有哪些区别?

PHPz
PHPzOriginal
2016-06-13 11:53:191984browse

在php中替换函数主要有strtr()和str_repalce()这两个函数,那么它们之间的区别是什么?有哪些?下面本篇文章就来给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP中str_repalce()和strtr()有哪些区别?

strtr()函数

strtr()的有两种用法:strtr(string,from,to)或者strtr(string,array)

首先针对strtr函数第一种方式:

我们看看下面的举例:

<?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(&#39;you&#39;=>&#39;her sister&#39;);
echo strtr("I Love you",$table_change);
?>

结果为: I Love her sister

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

比如:

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

结果是: I hate her sister

再次提醒那个Love 写成love 是行不通的哦。

str_repalce()函数

语法: string str_replace(string needle, string str, string haystack);

返回值: 字符串

函数种类: 资料处理

内容说明:

本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。

下例将 %body% 以 black 取代

<?php
$bodytag = str_replace("%body%", "black", "<body text=%body%>");
echo $bodytag;
?>

格式:

    [@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]

    [@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]

    [@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]

实例:

多对一替换:想把内容字段里所有的e388a4556c0f65e1904146cc1a846bee94b3e26ee717c64999d7867364b1b4a3标签清除掉,替换成空 [ @str_replace(array('e388a4556c0f65e1904146cc1a846bee','94b3e26ee717c64999d7867364b1b4a3'), '', $Content) ]

一对一替换:想把内容字段里所有的0c6dc11e160d3b678d68754cc175188a标签换成e388a4556c0f65e1904146cc1a846bee [ @str_replace('0c6dc11e160d3b678d68754cc175188a', 'e388a4556c0f65e1904146cc1a846bee', $Content) ]

多对多替换:想把内容字段里的0c6dc11e160d3b678d68754cc175188a换成df250b2156c434f3390392d09b1c9563, 同时e388a4556c0f65e1904146cc1a846bee换f32b48428a809b51f04d3228cdf461fa,把94b3e26ee717c64999d7867364b1b4a3全清除 [ @str_replace(array('0c6dc11e160d3b678d68754cc175188a', 'e388a4556c0f65e1904146cc1a846bee','94b3e26ee717c64999d7867364b1b4a3') , array('df250b2156c434f3390392d09b1c9563','f32b48428a809b51f04d3228cdf461fa',''), $Content) ]

str_repalce()和strtr()的区别:

str_replace会循环替换

strtr是一次性遍历,按照字符串长度倒序排列替换

strtr的性能比str_replace的性能好,strtr比str_replace性能上要快4倍。

更多相关知识,请访问 PHP中文网!!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn