str_replace()和strtr()两个函数用法及对比

网络整理 - 06-27

在查找能实现字符串替换功能的php函数的时候,可能会碰到这两个函数:str_replace()和strtr()。因为strtr()函数名称的简短,语法的简洁可能会倾向于先尝试使用strtr()
。在尝试过以后,发现strtr这个函数并不是字符串替换的合适选择,我们应该使用str_replace()函数

下面是str_replace()的语法:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

其中mixed类型在这里代表可以接受字符串和数字,我们以字符串为例:

str_replace("it","i love it","itjsxx.com")

将itjsxx.com中的it替换为i love it,结果为"i love itjsxx.com"

注意:被查找字符串参数是在第三个,不是第一个。这个可能有点让人不太习惯。

再来说说strtr()为什么不适合做字符串替换

下面是strtr()的语法:

string strtr ( string $str , string $from , string $to )

该函数返回 str 的一个副本,并将在 from 中指定的字符转换为 to 中相应的字符

看起来是很简洁很好用很没有问题的一个字符串替换函数,但是实际却有两个大问题:

1.from和to的长度必须相当,如果不相等多余的字符部分将被忽略。

2.from和to的基本操作单位是字符,而不是字符串。假设from是"io",to是"ef",它的意思是所有i字符替换为e,所有o字符替换为f,根本不是我们所期望的"io"替换为"ef"。这结果与我们的需求完全是大相径庭。

因此,strtr这个函数,根本不适合一般的替换需求。如果有特殊的替换需求符合此函数,可以选用此函数。php字符串替换,还是用str_replace()正解