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

目录
  • 一. str_repalce()用法
  • 二. strtr()用法
  • 三. 效率对比
  • 四. 总结

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对比内容请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后多多支持我们!

时间: 2022-11-03

php中替换字符串函数strtr()和str_repalce()的用法与区别

首先来看看这个php字符串替换函数 strtr()的两种用法: strtr(string,from,to) 或者strtr(string,array) 首先针对strtr函数第一种方式: 我们看看下面的举例: <?php echo strtr("I Love you","Lo","lO"); ?> 得到的结果是: I lOve yOu 这个结果提醒我们: 1.strtr它是区分大小写的 2.strtr的替换是很特殊的,你注意看后面那个

详谈php中 strtr 和 str_replace 的效率问题

在网上看了一些php优化的指南,里面提到:使用strtr 函数 比 str_replace快4倍. 本着探索的精神动手验证. 代码 $string = 'abcdefg'; set_time_limit(300); $start = microtime(true); for ($i = 0; $i < 10000000; $i++) { $str = str_replace('a', '123', $string); } echo microtime(true)-$start, '<br /&

php字符串函数学习之strstr()

复制代码 代码如下: <?php /* 定义和用法 strstr() 函数搜索一个字符串在另一个字符串中的第一次出现. 该函数返回字符串的其余部分(从匹配点).如果未找到所搜索的字符串,则返回 false. 语法 string strstr ( string, search) 参数 描述 string 必需.规定被搜索的字符串. search 必需.规定所搜索的字符串.如果该参数是数字,则搜索匹配数字 ASCII 值的字符 提示和注释 注释:该函数是二进制安全的. 注释:该函数对大小写敏感.如需

PHP中strtr字符串替换用法详解

本文实例讲述了PHP中strtr字符串替换用法.分享给大家供大家参考.具体分析如下: strtr(string,from,to)或者strtr(string,array) 首先针对strtr函数第一种方式,我们看看下面的举例,代码如下: 复制代码 代码如下: <?php echo strtr("I Love you","Lo","lO"); ?> 得到的结果是: 1 I lOve yOu 这个结果提醒我们,1.strtr它是区分大小写

详解PHP字符串替换str_replace()函数四种用法

下面通过本文给大家分享PHP字符串替换str_replace()函数4种用法,具体内容如下所示: mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 该函数返回一个字符串或者数组.该字符串或数组是将subject中全部的search都被replace替换之后的结果. 1.$search,要替换的字符串,或数组 2.$replace,被用来替换的字符串或数组 3.$subjec

php 中的str_replace 函数总结

字符串取代. 语法: string str_replace(string needle, string str, string haystack); 返回值: 字符串 函数种类: 资料处理 内容说明 本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str.mlevine@adtraq.com (11-Apr-1999) 指出在 PHP 3.0.7 版,本函数有些 bug,而 nadeem@bleh.org (05-Jun-1999) 补充在 PHP 3.

比较strtr, str_replace和preg_replace三个函数的效率

之前已经分析过strtr的源码了,现在就比较strtr, str_replace和preg_replace的效率: 复制代码 代码如下: $str = '111111110000000000000000000000000000000111000001000100010000010010000010010000010100000010'; $str = str_repeat($str, 1); $pattern1 = array('12345'=>'', '67891'=>''); $patte

解析strtr函数的效率问题

最近经常要对字符串进行匹配和替换操作,之前一般使用str_replace或者preg_replace,据说strtr的效率不错,所以对比了一下: 复制代码 代码如下: $i = 0;$t = microtime(true);for(;$i<1000;$i++){    $str = strtr(md5($i), $p2);}var_dump(microtime(true)-$t);    //0.085476875305176$t = microtime(true);for(;$i<2000;

解析php中var_dump,var_export,print_r三个函数的区别

下面的示例看看这三个函数的具体的区别,其中var_dump和var_export比较少用,但他们两者又很相似.所以可以看看: 复制代码 代码如下: <?php$a = array(1,1,32,322,3433,array(32,232,23232));$b = 1234;$c = "alsdfl;asdf";$d = 'a';$e = fopen("slsl.txt", "r");var_dump($a);echo "<b

php中curl、fsocket、file_get_content三个函数的使用比较

抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl.直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了.我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好. php中curl和file_get_content的一

Python中用于去除空格的三个函数的使用小结

函数:strip()  lstrip()  rstrip() 作用:去除字符串中的空格或指定字符 一.默认用法:去除空格 str.strip()  : 去除字符串两边的空格 str.lstrip() : 去除字符串左边的空格 str.rstrip() : 去除字符串右边的空格 注:此处的空格包含'\n', '\r',  '\t',  ' ' 默认用法实例 >>> dodo = " hello boy " >>> dodo.strip() 'hello

JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解

首先还是看看JavaScript: The Definitive Guide, 4th Edition中对三个函数的定义. Math.ceil(): round a number up Arguments: Any numeric value or expression Returns: The closest integer greater than or equal to x. ---------------------------------------------------------

javascript中不易分清的slice,splice和split三个函数

每每见到这三个函数,我都会很懵,一定要到网上搜搜:今天,恰巧又见到了它们,所以想必是时候为它们做个笔记啦 1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选) //如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾 var a=[1,2,3,4,5,6]; var b=a.slice(0,3); //[1,2,3]

SqlServer2016模糊匹配的三种方式及效率问题简析

本文实例讲述了SqlServer2016模糊匹配的三种方式及效率问题.分享给大家供大家参考,具体如下: 数据库是Sqlserver 2016版 现在业务需求是:要查询出企业名称为以下几个的,XXX,XXXX等等: 第一种方式:like '%XXX%' OR like '%XXXX%' select cName from tAccountAuditing where cName like '%测试moa000154%' OR cName like '%测试集团上海事业部%' and activeA

PHP遍历数组的三种方法及效率对比分析

本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一.foreach() foreach()是一个用来遍历数组中数据的最简单有效的方法. <?php $urls= array('aaa','bbb','ccc','ddd'); foreach ($urls as $url){ echo "This Site url is $url! <b

Javascript Math ceil()、floor()、round()三个函数的区别

下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: ◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数: ◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数: ◎Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则). 下面是使用这些方法的示例: alert(Math.ceil(25.9))