strtr()和str_replace()功能上有哪些区别?

tianyaxiao 2008-01-16 03:43:43
我的手册对于STRTR()都是E文,看不懂,有哪位能详细解释下strtr()和str_replace()在功能上的区别?我昨天测试了一下,发现strtr()和str_replace()替换后的结果是不同的。
...全文
1187 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CredoChen 2012-05-09
  • 打赏
  • 举报
回复
str_replace用数组方式替换要快于strtr,但用字符串方式就刚好相反
我是一个新人 2011-09-26
  • 打赏
  • 举报
回复
学习了 感谢
CiBill 2008-07-20
  • 打赏
  • 举报
回复
strlen消耗的资源比你省下的资源要多,呵呵

strtr是按字符替换的,而且替换是区分大小写的。

例如:
strtr('I Love you!','Lo','lO');
结果是:I lOve yOu!

strtr('I Love you!','lo','lO');
结果是:I LOve yOu!

如果你要进行字符串替换,那么可以将替换的字符串作为数组传入:

如:
$arr_tmp=Array('Love'=>'hate','you'=>'his sister');
strtr('I Love you!',$arr_tmp);
结果是:I hate his sister!

这样就达到我们想要的结果了。

但是,请注意:
如果把数组'Love'换成'love',那么结果就不一样了。
$arr_tmp=Array('love'=>'hate','you'=>'his sister');
strtr('I Love you!',$arr_tmp);
结果是:I Love his sister!

看了这4个例子,你应该明白strtr的用法了。
tianyaxiao 2008-01-16
  • 打赏
  • 举报
回复
看样子不能直接用strtr()了,非得自己写一个函数来先判断替换与被替换字符的长度,然后来调用对应的函数,呵呵,虽然多了两步strlen(),但是执行效率四倍的提升应该还是赚了。
多谢诸位!
foolbirdflyfirst 2008-01-16
  • 打赏
  • 举报
回复
那意思就是只能替换长度一样的字符?
那不够的字符如何解决?总不能补上一个空格吧?
======================
strtr ( string str, string from, string to )

意思就是说如果string from 和 string to长度不等,那么多余出来的字符串将被忽略,具体看上两例. :-).
foolbirdflyfirst 2008-01-16
  • 打赏
  • 举报
回复
补充一下:

echo strtr("abcdef","abc","1234");//替换成123def,而不是1234def,因为strlen('1234') > strlen('abc'),'4'给忽略掉了,上一例同理
tianyaxiao 2008-01-16
  • 打赏
  • 举报
回复
那意思就是只能替换长度一样的字符?
那不够的字符如何解决?总不能补上一个空格吧?
foolbirdflyfirst 2008-01-16
  • 打赏
  • 举报
回复
手册有说:If from and to are different lengths, the extra characters in the longer of the two are ignored.



echo strtr("abcdef","abc","12");//替换成12cdef,而不是12def,因为strlen('abc') > strlen('12')
tianyaxiao 2008-01-16
  • 打赏
  • 举报
回复
我在替换单引号的时候会出现不同,具体代码已经没了
loveme1204 2008-01-16
  • 打赏
  • 举报
回复
strtr函数的效率是str_replace函数的四倍,但结果应该是一样的吧。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧