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

(0)

相关推荐

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

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

  • 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字符串替换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

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

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

  • 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.

  • 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中 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函数之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:规定要查找的字符

  • C语言rewind与fseek函数之随机读写文件的用法详解

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读写,也就是说从文件的任意位置开始读写. 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位. 文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek(). rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的原型为

  • Java List 用法详解及实例分析

    Java List 用法详解及实例分析 Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引 ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步 LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快) Vector

  • Python3去除头尾指定字符的函数strip()、lstrip()、rstrip()用法详解

    Python中有三个去除头尾指定字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) rstrip:用来去除结尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) 从字面可以看出r=right,l=left,strip.rstrip.lstrip是开发中常用的字符串格式化的方法. 注意:这些

  • Oracle中的INSTR,NVL和SUBSTR函数的用法详解

    Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 在字符串中查找'OR',从第三个字符位置开始查找"OR",取第三个字后第2个匹配项的位置. 默认查找顺序为从左到右.当起始位置为负数的时候,从右边开始查找. 所以SELECT I

  • JS中的Replace()传入函数时的用法详解

    replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串.. 废话不多说了,直接给大家贴代码了,具体代码如下所示: <script> var str = "a1ba2b"; var reg = /a.b/g; str = str.replace(reg,func

  • JavaScript中eval()函数用法详解

    eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行. 如果参数是一个表达式,eval() 函数将执行表达式.如果参数是Javascript语句,eval()将执行 Javascript 语句. 语法 复制代码 代码如下: eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. eval()函数用法详解: 此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eva

  • ES6中Array.find()和findIndex()函数的用法详解

    ES6为Array增加了find(),findIndex函数. find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined. findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1. 他们的都是一个查找回调函数. [1, 2, 3, 4].find((value, index, arr) => { }) 查找函数有三个参数. value:每一次迭代查找的数组元素. index:每一次迭代查找的数组元素索引. arr:被查找的数组. 例: 1.查找

  • JavaScript中的普通函数和箭头函数的区别和用法详解

    最近被问到了一个问题: javaScript 中的箭头函数 ( => ) 和普通函数 ( function ) 有什么区别? 我当时想的就是:这个问题很简单啊~(flag),然后做出了错误的回答-- 箭头函数中的 this 和调用时的上下文无关,而是取决于定义时的上下文 这并不是很正确的答案--虽然也不是完全错误 箭头函数中的 this 首先说我的回答中没有错误的部分:箭头函数中的 this 确实和调用时的上下文无关 function make () { return ()=>{ consol

  • C语言中memcpy 函数的用法详解

    C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. void* memcpy(void* destination, const void* source, size_t num); void* dest 目标内存 const void* src 源内存 size_t num 字节个数 库中实现的memcpy函数 struct { ch

随机推荐