php函数之strtr和str_replace的用法详解以及效率分析
作者:yin 发布时间:2023-06-02 14:04:18
标签:php,strtr,str,replace
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函数替换字符串或数组。


猜你喜欢
- 一、概念介绍矩形树图(Treemap),即矩形式树状结构图,利用矩形的面积表示数值的大小,颜色用于类别区分,常用于呈现多类别的一维数值比较,
- // 自动转换字符集 支持数组转换 function auto_charset($fContents, $from='gbk'
- 前言本篇来学习pytest中内置fixture中临时目录的使用tmpdirtmpdir作用范围是函数级别,创建临时文件供单个测试点调用# -
- 详细参考:https://gitee.com/copperpeas/uniapp-paymentuniapp-payment介绍uniapp
- windows下mysql双向同步备份实现方法以下的文章主要讲述的是在windows环境下实现MySQL数据库的主从同步备份的正确操作方案,
- 这两天做基于 Flash9(ActionScript 3.0)的 JavaScript PHPRPC 3.0 客户端时遇到了一些 JavaS
- 抽象基类的常见用途:实现接口时作为超类使用。然后,说明抽象基类如何检查具体子类是否符合接口定义,以及如何使用注册机制声明一个类实现了某个接口
- 众所周知,凡是用 FrontPage 做的网页里面都有类似这样的标记:<META content="Microso
- 一、函数list(1)定义:用打开的文件作为参数,把文件内的每一行内容作为一个元素(2)格式:list(文件)(3)例子:with open
- 先来看一个概念:数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全
- sql调优的几种方式:避免使用select *、用union all 代替union、小表驱动大表、批量操作、多用limit、in中值太多、
- 如果直接对大文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。即通过yield。
- 前言最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢。各种设计直接简洁,方便研究,比tensorflow的臃
- 一、JavaScript中创建数组的方式(1)使用 Array 构造函数:var arr1 = new Array(); //创建
- python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), i
- 本文实例为大家分享了Python实现学生信息管理系统的具体代码,供大家参考,具体内容如下要求描述:学生的信息包括:学号,姓名,年龄,性别,出
- 本文实例讲述了golang实现sql结果集以json格式输出的方法。分享给大家供大家参考,具体如下:func getJSON(sqlStri
- 有过网页制作经验的朋友一定知道:一般来讲,把表格的边框定义为1px时,即border=1,而实际上是2
- 查询速度慢的原因很多,常见如下几种:1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2.I/O吞吐量小,形成了瓶颈效
- 本文实例为大家分享了python实现简易学生信息管理系统的具体代码,供大家参考,具体内容如下一、系统功能1.录入学生信息2.查找学生信息3.