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了,但是这样很容易出问题,就不一一列举了
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-01-02

这种替换用循环效率太差了,你按照我下面的方法试下,我用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 )

本回答被网友采纳
第2个回答  2018-04-08

不同的值进行替换要多次使用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)

本回答被网友采纳