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第一种语法而言的。 阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: Thinkphp5.0中自动生成模块以及目录方案
- 下一篇:没有了