php函数之strtr和str_replace的用法详解以及效率分析

作者:yin 时间:2023-06-02 14:04:18 

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
0
投稿

猜你喜欢

  • oracle中的视图详解

    2009-12-22 11:48:00
  • ASP编程入门进阶(十三):AdRotator & Content Rotator

    2008-09-24 17:47:00
  • MySQL的存储过程写法和Cursor的使用

    2008-12-03 15:55:00
  • 文字超长自动省略,以...代替,CSS实现

    2009-07-16 10:15:00
  • asp分类算法要解决的问题

    2009-09-10 16:49:00
  • Asp 编码互转的研究和实现代码

    2011-03-30 10:44:00
  • asp Server对象之MapPath方法

    2010-07-07 12:28:00
  • IE不支持overrideMimeType()方法,即使是IE7.

    2009-02-08 16:58:00
  • 注册表单的规则——读《Patterns for Sign Up &Ramp Up》

    2008-07-17 12:51:00
  • 图片预载ImageLoader 1.1 Release

    2008-11-04 20:04:00
  • 能否推荐一个论坛用的数据库结构?

    2009-11-01 18:09:00
  • 基于display:table的CSS布局

    2008-10-30 10:38:00
  • 关于交互设计在QQ秀赠送流程中的优化

    2009-06-11 12:30:00
  • 使用Microsoft SQL Server 2000全文搜索功能构建Web搜索应用程序

    2008-09-29 12:32:00
  • 国外404错误页面的创意设计欣赏

    2007-08-19 15:44:00
  • phpMyAdmin 2.10.2 配置方法

    2007-08-22 08:11:00
  • js友好的表单验证程序vform

    2007-08-16 13:32:00
  • 逐步讲解向Access数据库上传且显示图片

    2008-11-28 16:51:00
  • Asp函数介紹(37个常用函数)

    2011-04-11 11:06:00
  • CSS制作滑动折叠的文字效果

    2008-12-01 13:10:00
  • asp之家 网络编程 m.aspxhome.com