str_replace()、preg_replace()、strtr()三者的区别和用法
来源:互联网 发布:纽易网络 编辑:程序博客网 时间:2024/05/21 14:51
php中在字符串的替换模块有3个函数,str_replace(),preg_replace(),以及strtr()。在编程过程中,这三个函数的执行效率有所不同,str_replace()函数比preg_replace()函数执行效率快,而strtr()函数的执行效率又高于str_replace(),所以在变成中建议使用strtr()函数。
str_replace():
定义和用法
str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。
该函数必须遵循下列规则:
- 如果搜索的字符串是数组,那么它将返回数组。
- 如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
- 如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
- 如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
注释:该函数区分大小写。请使用 str_ireplace() 函数执行不区分大小写的搜索。
注释:该函数是二进制安全的。、
语法
str_replace(find,replace,string,count)
实例
把字符串 "Hello world!" 中的字符 "world" 替换为 "PHP":
<?php$str = str_replace("world","PHP","Hello world!");
echo $str;?>
代码执行结果:Hello PHP!
preg_replace():
preg_replace ()用于执行一个正则表达式的搜索和替换,一般很少使用。
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
说明:搜索subject中匹配pattern的部分, 以replacement进行替换。
preg_replace参数补充说明:1、replacement 可以包含 \\n 形式或 $n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 \\0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。
2、对替换模式在一个逆向引用后面紧接着一个数字时(如 \\11),不能使用 \\ 符号来表示逆向引用。因为这样将会使 preg_replace() 搞不清楚是想要一个 \\1 的逆向引用后面跟着一个数字 1 还是一个 \\11 的逆向引用。解决方法是使用 \${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。
3、上述参数除 limit 外都可以是一个数组。如果 pattern 和 replacement 都是数组,将以其键名在数组中出现的顺序来进行处理,这不一定和索引的数字顺序相同。如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换,应该在调用 preg_replace() 之前用 ksort() 函数对数组进行排序。
下面列举一些preg_replace的例子:echo preg_replace("/[0-9]/","",$str);//去掉所有数字 echo preg_replace("/[a-z]/","",$str); //这样是去掉所有小写字母 echo preg_replace("/[A-Z]/","",$str); //这样是去掉所有大写字母 echo preg_replace("/[a-z,A-Z]/","",$str); //这样是去掉所有字母
注:开头结尾出现斜杠(/),是告诉解析器双斜杠里面的内容即为正则表达式,也是声明正则表达式的标志,就像声明PHP变量用$一样。一对中括号([ ])里的内容,即是要查找替换的内容。
strtr():
定义和用法
strtr() 函数转换字符串中特定的字符。
注释:如果 from 和 to 参数的长度不同,则会被格式化为最短的长度。
语法
strtr(string,from,to)
或者:
strtr(string,array)
详解
strtr(string,from,to):
逐个字符开始替换,以from跟to中长度较较短的一个为准,例如:
strtr("aidenliu","ai","b") 只替换原始字符串中出现的a 输出:bidenliu
strtr("aidenliu","a","bc") 只替换原始字符串中出现的a 输出:bidenliu
此函数是大小写敏感的,具如果发生多次替换,每一次替换的蓝本都是最原始的那个字符串,而不是在前一次替换的基础上替换,如
strtr("aidenliu","aA","A@") 会输出Aidenliu 而不是@idenliu,也不是A@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"=>"")) 发生替换
运行实例
把字符串 "Hello world" 替换成 "Hi earth":
<?php$arr = array("Hello" => "Hi", "world" => "earth");echo strtr("Hello world",$arr);?>
- str_replace()、preg_replace()、strtr()三者的区别和用法
- 比较strtr, str_replace和preg_replace的效率
- 比较strtr, str_replace和preg_replace三个函数的效率
- PHP中strtr()和str_replace()的区别
- strtr与str_replace的区别
- php str_replace与preg_replace用法区别
- php中strtr和str_replace的坑
- php中strtr和str_replace的坑
- PHP str_replace() 函数 & strtr() 函数 的常见用法
- 关于str_replace和strtr函数
- strtr和str_replace效率探索
- PHP中str_replace和preg_replace
- PHP中strtr和str_replace比较
- 关于PHP中的strtr和str_replace使用
- PHP替换字符串函数strtr()和str_replace()
- php中str_replace和str_ireplace的用法和区别
- php中str_replace和str_ireplace的用法和区别
- str_replace和substr_replace的区别
- Java类加载(深入理解Java虚拟机学习笔记)
- 超级台阶
- csu1335 高桥与低桥
- Codeforces 476A
- 从密码到token, 一个授权的故事
- str_replace()、preg_replace()、strtr()三者的区别和用法
- 详解数据挖掘与机器学习的区别与联系
- 如何严格设置php中session过期时间
- Qt鼠标键盘事件
- python学习笔记(3)——循环
- [jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)
- 面试题57:删除链表中重复的结点
- spring与redis整合(一)--采用原生的jedis(ShardedJedisPool)
- Andriod5.0新特性