PHP中字符串替换函数之strtr详解

官方给出解释如下

语法

strtr(string,from,to)

或者:

strtr(string,array)

参数 描述
string 必需。规定要转换的字符串。
from 必需(除非使用数组)。规定要改变的字符。
to 必需(除非使用数组)。规定要改变为的字符。
array 必需(除非使用 from 和 to)。数组,其中的键名是更改的原始字符,键值是更改的目标字符。

初看,貌似理解,但是当实际应用时,方知理解过于浅浮。

语法一

eg:

$a='reworen';
var_dump($a);
$a=strtr($a, 'ren', 'AAA'); 
var_dump($a);

本以为会输出rewoAAA,但是实际输出内容AAwoAAA。究其原因,原来是因为strtr是按照字符来替换了,说白了就是将r替换为A,e替换为A,n替换为A

例题2

$a='reworen';
$a=strtr($a, 'ren', 'ABCDEF'); 
var_dump($a);

答案:ABwoABC。因为strlen('ren')<strlen('ABCDEF'),故多的字符被忽略掉了


例题3

$a='reworen';
$a=strtr($a, 'ren', 'AB'); 
var_dump($a);
答案:ABwoABn。 因为strlen('ren')>strlen('ABCDEF'),故多的字符被忽略掉了,不会参与替换


例题4

$a='reworen';
$a=strtr($a, 'ren', ''); 
var_dump($a);
答案:reworen。因为当改变后的字符为''时候,就不会发生替换


例题5

$a='reworen';
$a=strtr($a, 'ren', ' '); 
var_dump($a);
答案:' enwo en'。因为 strlen('ren')>strlen('ABCDEF')。相当于将字符r替换为空格


语法二

例题1

strtr($a,array('re'=>'hello','woren'=>' world'));
答案:hello world

例题2

$a='reworen';
echo strtr($a,array('wo'=>'BBBB','rewo'=>'AAAA'));

答案: AAAAren。为什么呢?因为当strtr第二参数为数组的时候,替换之前,先对数组按照数组键长从大到小排序,排序后,在进行替换操作。这样的话,也说明了一个问题,当strtr已数组形式进行替换的时候,效率并不是很高。网上说的strtr替换效率是str_replace的四倍,是针对strtr第一种语法而言的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值