strtr函数的效率是str_replace函数的四倍,但结果应该是一样的吧。

解决方案 »

  1.   

    手册有说: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')
      

  2.   

    补充一下:echo strtr("abcdef","abc","1234");//替换成123def,而不是1234def,因为strlen('1234') > strlen('abc'),'4'给忽略掉了,上一例同理
      

  3.   

    那意思就是只能替换长度一样的字符? 
    那不够的字符如何解决?总不能补上一个空格吧?
    ======================
    strtr ( string str, string from, string to )意思就是说如果string from 和 string to长度不等,那么多余出来的字符串将被忽略,具体看上两例. :-).
      

  4.   

    看样子不能直接用strtr()了,非得自己写一个函数来先判断替换与被替换字符的长度,然后来调用对应的函数,呵呵,虽然多了两步strlen(),但是执行效率四倍的提升应该还是赚了。
    多谢诸位!
      

  5.   

    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的用法了。
      

  6.   

    str_replace用数组方式替换要快于strtr,但用字符串方式就刚好相反