str_replace和preg_relace这两个PHP系统函数都是用来“替换”的函数,str_replace主要用于字符串替换,而preg_relace顾名思义用于正则表达式替换,他们的具体用法和区别本文将举例说明。
str_replace的用法
1.字符串替换
比如变量
a
=
’
s
i
n
a
,
s
o
h
u
,
i
t
y
a
n
g
’
,
我
要
把
这
个
a=’sina,sohu,ityang’,我要把这个
a=’sina,sohu,ityang’,我要把这个a字符串中的sina替换成qq,那么这样用str_replace函数:
$a = str_replace('sina','qq',$a);
这样就替换成功了。第一个参数是要查找的字符串,第二个参数是要替换成什么字符串,第三个参数是以什么变量输出。
2.带有数组形式的str_replace替换
还是变量$a=’sina,sohu,ityang’,我要把sina替换成qq,sohu替换成google,这样用str_replace函数:
$a = str_replace(array('sina','sohu'),array('qq','google'),$a);
这样同时进行了两个不同字符串的替换,这种用法很有用,和第一种情况的区别就是用数组可以同时处理多个替换的需求,叫做数组映像替换。
注意:str_replace不能做正则替换
preg_relace正则表达式替换
1.不需要用到匹配结果的情况
比如有个字符串
a
=
’
i
t
y
a
n
g
−
66
’
,
这
个
字
符
串
可
能
的
形
式
很
多
,
还
可
能
是
a=’ityang-66’,这个字符串可能的形式很多,还可能是
a=’ityang−66’,这个字符串可能的形式很多,还可能是a=’ityang-26′,或’ityang-38′,’ityang-99’,但是都有个特征就是,’ityang-‘后面接数字,这个时候就要用正则表达式进行匹配了。
要把后面的数字统一替换成一个字母”nums”怎么办?看以下代码:
$a = preg_replace('/ityang-([0-9]+)/','nums',$a);
第一个参数是正则表达式,用’//’里面内容代表正则表达式,关于正则表达式的含义和用法这里不多讲,这里匹配的是以ityang-开头的接数字的字符串的意思,其中括号里面的就是匹配的结果,可以多个括号,那么就是匹配到的不同分组,第二个参数是要替换成什么,第三个参数是以什么变量输出。
2.需要用到匹配结果的情况
还是第一个情况的例子,我不是要把数字统一替换成字母“nums”,而是在这个数字后面再加上一个字符串“-list”,就是把“ityang-1”这样的变成“ityang-1-list”,这个时候要用到匹配到的结果。
$a = preg_replace('/ityang-([0-9]+)/','ityang-${1}-list',$a);
第二个参数${1}就是正则表达式匹配的结果,1表示第一个括号里面的,这里也只有一个括号,以此类推。
这就是str_replace替换和preg_relace正则替换函数的基本用法,掌握了基本用法,就可以灵活运用处理很多问题,这两个函数是处理字符串非常常见的函数,功能十分强大。
{preg_replace("/[0-9]/","*",$t.content)}
将字段content中的数字都替换为“*”这个是我现在用的cms的替换列子,大家不用理会!我只是备注下!