PHP中字符串替换函数之strtr详解
2016-03-01 11:36
746 查看
官方给出解释如下
语法
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第一种语法而言的。
相关文章推荐
- PHP学习(一):对PHP的理解
- 编译安装 PHP 7.0.3 亲测全攻略 & 以及如何单独的安装某个模块
- PHP的curl常用的5种写法
- getParameter和getAttribute的区别
- 欢迎使用CSDN-markdown编辑器
- php isset()与empty()的使用
- PHP的命名空间(转)
- PHPExcel使用-使用PHPExcel导出文件
- php 文件操作
- 下载PHP7的地址
- PHP汉字转拼音的两种方法+PHP提取汉字(中文)方法
- Windows下使用Composer安装yii2
- php5.6源码安装及php-fpm配置
- YII 数据缓存
- YII2自定义日志
- php+mysql在mac上的基本配置
- 什么是CGI,FastCGi,PHP-CGI,PHP-FPM,Spawn-FCGI
- PHP 文件上传
- 对ByteArrayInputStreamh和ByteArrayOutputStream的理解及使用
- php的大小写敏感问题整理