str_replace怎么替换多个关键字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了str_replace怎么替换多个关键字?相关的知识,希望对你有一定的参考价值。

内容中有多个关键字,但需要各换各的。如a换成1,b换成2,c换成3,d换成4。这样可以实现么?小弟刚学php,还没入门,不知道问题是不是很傻。另外什么循环之类的,也只是听过,啥都没明白,也许是需要用循环操作来替换?

不同的值进行替换要多次使用str_replace,而对于同一个值想要多次替换只需写一个str_replce
用法
str_replce($a,$b,$c);
从变量$c的值中寻找$a(服务器会把$a换成它的值),如果找到了就把它替换成$b(同样系统会将$b看成的值进行替换,而不是仅替换成函数名)也就是说$a是原字符串,$b是新字符串,$c是要被搜索的字符串,整个函数返回的值是替换后的$c的值(注意,是替换后的$c)
对于你的情况用这种方法有点麻烦,可以用strtr()进行替换,注意,最好用上数组,像这样
$a=array('a'=>'1','b'>='2','c'=>'3','d'=>'4');
$b='abcdefgabw';
echo strtr($b,$a);
显示结果为
1234efg12w
也就是说如果strt的第二个参数是数组,那第三个参数可以留空,替换法则为将数组的键名替换成其对应的值,就是a替换成1,b换成2等等

当然$a可以为字符串,比如$a='a';就需要这样写strtr($b,1,$a)那样就直接把1替换成字符a了,但是这样很容易出问题,就不一一列举了
参考技术A

这种替换用循环效率太差了,你按照我下面的方法试下,我用JS语法给你提供一下思路,你自己用php模仿修改一下。

function R(key) 
  var $S =  A:"11", B:"22", C:"33", D:"44", E:"55", F:"66" ;
  return ($S[key] ? $S[key] : key);
;
var text = "A测B试C一D下E".replace(/(A|B|C|D|E|F)/g, function($1)return R($1) );
alert( text )

参考技术B

不同的值进行替换要多次使用str_replace,而对于同一个值想要多次替换只需写一个。

str_replce
用法
str_replce($a,$b,$c);
从变量$c的值中寻找$a(服务器会把$a换成它的值),如果找到了就把它替换成$b(同样系统会将$b看成的值进行替换,而不是仅替换成函数名)也就是说$a是原字符串,$b是新字符串,$c是要被搜索的字符串,整个函数返回的值是替换后的$c的值(注意,是替换后的$c)
对于你的情况用这种方法有点麻烦,可以用strtr()进行替换,注意,最好用上数组,像这样
$a=array('a'=>'1','b'>='2','c'=>'3','d'=>'4');
$b='abcdefgabw';
echo strtr($b,$a);


显示结果为
1234efg12w
也就是说如果strt的第二个参数是数组,那第三个参数可以留空,替换法则为将数组的键名替换成其对应的值,就是a替换成1,b换成2等等。

当然$a可以为字符串,比如$a='a';就需要这样写strtr($b,1,$a)那样就直接把1替换成字符a了,但是这样很容易出问题。

用正则替换
preg_replace('/[$find1|$find2|$find3]/',replace,string,count)

或者用一个循环来处理
$find_list = array($find1,$find2,$find3)
foreach($find_list as $find)
str_replace(find,replace,string,count)

以上是关于str_replace怎么替换多个关键字?的主要内容,如果未能解决你的问题,请参考以下文章

str_replace 怎样才只替换一次 - 技术问答

突出搜索中的多个关键字

在搜索中突出显示多个关键字

求php完整代码 使用正则表达式检索用户输入的查询关键字,并描红

怎么在一个word文档中 同时搜索多个关键字,并能高亮显示它们?有插件么 或者告诉我一个宏?

php怎么实现搜索高亮,注意是分开的字符