strtr与str_replace的区别
2013-03-12 10:58:09| 分类: php函数对比 |字号 订阅
strtr跟被替换的字符(from)和替换的字(to)有关系。只是替换from和to中间最小的长度。他是大小写敏感的
strtr(string,array):
array 为关联数组,用关联数组中的值替换原始字符串中出现的对应的键,如果发生多次替换,每次替换的对像都是
最原始的那个字符串,而不是在一次替换的基础上替换(此点与str_replace不同)
strtr(string,from,to):
逐个字符开始替换,以from跟to中长度较较短的一个为准,例如:
strtr("aidenliu","ai","b") 只替换原始字符串中出现的a 输出:bidenliu
strtr("aidenliu","a","bc") 只替换原始字符串中出现的a 输出:bidenliu
此函数是大小写敏感的,具如果发生多次替换,每一次替换的蓝本都是最原始的那个字符串,而不是在前一次替换的基础上替换,如
strtr("aidenliu","aA","A@") 会输出Aidenliu 而不是@idenliu
strtr(string,array):
array 为关联数组,用关联数组中的值替换原始字符串中出现的对应的键,如果发生多次替换,每次替换的对像都是最原始的那个字符串,而不是在一次替换的基础上替换(此点与str_replace不同)
strtr(string,from,to)与 strtr(string,array):
strtr(string,from,to)是逐个字符替换,而strtr(string,array)是字符串替换
strtr("aidenliu","ai","") 不发生替换(第二个参数为零长度字符串)
strtr("aidenliu",array("ai"=>"")) 发生替换
参考如下文章:
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的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。
再举一个特殊例子,说明这个php的sttr函数的怪异
<?php
echo strtr("I Love you","Love","");
?>
结果是:
I Love you
什么也不会改变,所以strtr需要注意的是:
3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。
再次举例strtr函数的另一种情况:
<?php
echo strtr("I Loves you","Love","lOvEA");
?>
结果是:
I lOvEs yOu
注意看第三个参数的A,在结果中并没有出现。
4.我不建议用strtr以少换多。
ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。
5.能用strtr函数的时候一定要用。
那怎么用才舒服?
这就是它的第二种情况:
strtr(string,array)
6.strtr符合意愿的使用方法
<?php
$table_change = array('you'=>'her sister');
echo strtr("I Love you",$table_change);
?>
结果为:
I Love her sister
7.小技巧:你想到替换什么你就往数组加什么
比如:
<?php
$table_change = array('you'=>'her sister');
$table_change += array('Love' => 'hate');
echo strtr("I Love you",$table_change);
?>
结果是:
I hate her sister
再次提醒那个Love 写成love 是行不通的哦。
字符串取代。
语法: 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.0.8 版本函数就回复正常了。
使用范例
下例将 %body% 以 black 取代
<?php
$bodytag = str_replace("%body%", "black", "<body text=%body%>");
echo $bodytag;
?>
格式:
[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]
实例:
多对一替换:想把内容字段里所有的<p></p>标签清除掉,替换成空 [@str_replace(array('<p>','</p>'), '', $Content)]
一对一替换:想把内容字段里所有的<br>标签换成<p> [@str_replace('<br>', '<p>', $Content)]
多对多替换:想把内容字段里的<br>换成<br
/>, 同时<p>换<hr>,把</p>全清除
[@str_replace(array('<br>', '<p>','</p>'),
array('<br />','<hr>',''), $Content)]
strtr与str_replace的区别的更多相关文章
- 【php】strtr与str_replace的区别
strtr(string,from,to): 逐个字符开始替换,以from跟to中长度较较短的一个为准,例如: strtr("aidenliu","ai",&q ...
- php函数之strtr和str_replace的区别
php字符串替换函数 strtr()有两种用法: strtr(string,from,to) 或者strtr(string,array) 首先针对strtr函数第一种方式: 我们看看下面的举例: &l ...
- strtr、str_replace()、substr_replace、preg_replace之间的区别
strtr(string, from, to): 逐个字符开始替换,以from跟to中长度较较短的一个为准,例如: strtr("aidengni","ai", ...
- strtr和str_replace字符替换函数
(一)strtr是字符替换函数 (1)单个字符替换: <?php echo strtr("abba", "ab", "10"),&qu ...
- PHP基础--strtr和str_replace字符替换函数
(一)strtr是字符替换函数 (1)单个字符替换: <?php echo strtr("abba", "ab", "10"),&qu ...
- php替换字符串函数strtr()和str_repalce()区别
php中替换函数主要有strtr(),str_repalce()这两个函数,但你们都知道他们这两个函数的区别和用法吗? 先来看看这个php字符串替换函数 strtr()的两种用法: strtr(str ...
- php中替换函数主要用的几个函数strtr(),str_repalce()。
php中替换函数主要有strtr(),str_repalce()这两个函数,今天介绍下他们的区别和用法, 先来看看这个php字符串替换函数 strtr()的两种用法: strtr(string,fro ...
- php 函数strtr 替换函数实例解析 strtr 速度比较快
先来看看这个php字符串替换函数 PHP字符串替换函数strtr()的两种状态 strtr(string,from,to) 或者strtr(string,array) 首先针对PHP字符串替换函数st ...
- PHP 常用函数总结(一)
重点: 看函数的 ‘参数’ 和 ‘返回值’ 文档:http://www.w3school.com.cn/php/php_ref_array.asp http://www.w3school.com.cn ...
随机推荐
- Release Notes for XE5
开发者之前说明 http://docwiki.embarcadero.com/RADStudio/XE5/en/Release_Notes_for_XE5
- C#中数据库事务、存储过程基本用法
SQL 事务 public bool UpdateQsRegisterSql(List<string> ids, int newQueueId, string newQueueName) ...
- C#中全局处理异常方式
using System; using System.Configuration; using System.Text; using System.Windows.Forms; using ZB.Qu ...
- 注册表项关于start参数的说明
start = {0,1,2,3,4}0 == 由核心装载器装载1 == 由I/O子系统装载2 == 自动启动3 == 手工启动4 == 禁止启动
- Restful API设计规范及实战【说的比较清楚了】
Restful API设计规范及实战 Restful API的概念在此就不费口舌了,博友们网上查哈定义文章很多,直入正题吧: 首先抛出一个问题:判断id为 用户下,名称为 使命召唤14(COD14 ...
- 问题解决:SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
转载:y小川 SettingWithCopyWarning 解决方案 问题场景:我在读取csv文件之后,因为要新增一个特征列并根据已有特征修改新增列的值,结果在修改的时候就碰到了SettingWith ...
- 易出错的bug避免
1:for(var i:int=0;i<p.numChildren;i++) { p.removeChildAt(i); } 或 for(var i:int=0;i& ...
- 享元(FlyWeight)模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能.这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式.享元模式尝试 ...
- 从知名外企到创业公司做CTO是一种怎样的体验?
这是我近期接受51CTO记者李玲玲采访的一篇文章,分享给大家. 作者:李玲玲来源:51cto.com|2016-12-30 15:47 http://cio.51cto.com/art/201612/ ...
- 无法定位序数****于动态链接库LIBEAY32.dll上
问题出现原因: GNS3打开出现问题 尝试的方法如下: 创建脚本: @echo 开始注册 copy libeay32.dll %windir%\system32 regsvr32 %windir%\s ...