php函数之strtr和str_replace的用法详解以及效率分析 <font color=red>原创</font>
PHP中主要用strtr()和str_repalce()这两个函数替换字符串和数组,但你们都知道他们这两个函数的区别和用法吗?有不少文章在说使用strtr函数比str_replace快4倍,那为什么很多时候都在用str_replace,到底应该使用哪个函数呢?
一. str_repalce()用法
str_replace(find,replace,string,count)
find:规定要查找的字符串或数组;
replace:被用来替换的字符串或数组;
string:被查询的字符串或数组;
count:可选,替换的次数
<?php //实例一:字符串替换字符串 $str1 = str_replace("red","black","red green yellow pink purple"); echo $str1; //输出结果为black green yellow pink purple echo "<br>"; //实例二:数组的键值用字符串替换 $arr = array("blue","red","green","yellow"); $str1 = str_replace("red","pink",$arr,$count); print_r($str1); //输出结果 //Array ( [0] => blue [1] => pink [2] => green [3] => yellow ) echo "<br>" . $count; //输出替换次数1 //实例三:数组替换数组,一一映射替换 $arr1 = array("banana","orange"); $arr2 = array("pitaya","tomato"); $con_arr = array("apple","orange","banana","grape"); $con_rep = str_replace($arr1,$arr2,$con_arr,$count1); print_r($con_rep); //输出结果 // Array ( [0] => apple [1] => tomato [2] => pitaya [3] => grape ) echo "<br>" . $count1; //输出替换次数2 //实例四:如$search为数组,$replace为字符串时 $search = array("banana","grape"); $replace = "tomato"; $arr = array("banana","apple","orange","grape"); $new_arr = str_replace($search,$replace,$arr,$count2); print_r($new_arr); //输出结果 //Array ( [0] => tomato [1] => apple [2] => orange [3] => tomato ) echo "<br>" . $count2; //输出替换次数2 ?>
二. strtr()用法
<?php //用法一:strtr(string,from,to) echo strtr("I Love you","Lo","lO"); /*输出结果: I lOve yOu you中的o被替换了,很诡异,要注意可能; 这种用法也不能被替换为空,不生效; 不推荐使用该方法*/ //用法二:strtr(string,array) $arr = array("Hello" => "Hi", "world" => "earth"); echo strtr("Hello world",$arr); /*输出结果: Hi earth*/ ?>
三. 效率对比
笔者使用apache环境和nginx环境做了测试:5.6版本 str_replace 比 strtr 平均效率高4倍,7.1版本效率基本相同。
四. 总结
使用strtr会出现一些不可控的错误,strtr被查询替换的只能是字符串,而且str_replace函数比strtr效率高、速度快,因此推荐使用str_replace函数替换字符串或数组。
到此这篇关于php函数之strtr和str_replace的用法详解以及效率分析的文章就介绍到这了,更多相关php函数strtr和str_replace对比内容请搜索猪先飞以前的文章或继续浏览下面的相关文章。希望大家以后多多支持猪先飞!
相关文章
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04- 这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
- 这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
- 这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31- 这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
- 这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
- 这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
- 这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
- 这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
- 在php中switch是选择,if else也有同理,但是它们肯定是有区别的,那么我们来看看它们两者的区别在哪里呢,下面先看switch case语句吧。 switch($id){ case 1: ...2016-11-25
- 下面小编就为大家带来一篇thinkphp自定义权限管理之名称判断方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-04-03
- 这篇文章主要介绍了php判断邮箱地址是否存在的方法,php判断邮箱地址是否存在的方法有两种,感兴趣的朋友可以参考一下...2016-02-18
- Sodium 出现的目的也是为了代替Mcrypt这个原来的加密扩展。在 PHP7.2 之后,Mcrypt已经被移除,在PHP7.1时就已经被标记为过时。不过,Sodium扩展的应用也并不是很多,大部分情况下我们都会使用OpenSSL来进行加密操作,所以,我们这篇文章只做了解即可。...2021-06-17
- 这篇文章主要为大家详细介绍了php图片添加文字水印实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-03-17
- <?php /* **数据库连接 */ $connect = new PDO ("mysql:host=localhost;dbname=online","root","960515"); ?> < PHP (Hypertext...2016-11-25
- 在本篇文章里小编给大家整理的是一篇关于php回溯算法计算组合总和的实例代码,有需要的朋友们可以学习参考下。...2021-07-14
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
这篇文章主要介绍了php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法的相关资料,需要的朋友可以参考下...2016-03-27- 随着adobe的FLEX和ROMTING的开源化又引起一场的RIA风波,我作为传统的WEB开发人员被其深深的吸引,作为web开发人员很关注flash如何和后台连接,在网上苦苦寻找终于...2016-11-25