2012-09-30 60 views
3

我想用一个特定单词替换多个同义词。用Str_Replace替换多个单词

<?p 

$a = array(
'truck', 
'vehicle', 
'seddan', 
'coupe', 
'Toyota', 
); 
$b = array(
'car', 
'car', 
'car', 
'car', 
'Lexus', 
); 
$str = ' 

Honda is a truck. 
Toyota is a vehicle. 
Nissan is a sedan. 
Scion is a coupe. 

'; 
echo str_replace($a,$b,$str); 
?> 

结果:本田是一辆车。雷克萨斯是一辆汽车。日产是一辆汽车。 Scion是一辆汽车。

有人可以告诉我一个干净的方式,用“汽车”代替“车辆,卡车,轿跑车,轿车”,而不是我个别替换所有4个。谢谢。

回答

7
$a = array('truck', 'vehicle', 'seddan', 'coupe'); 
$str = 'Honda is a truck. Toyota is a vehicle. Nissan is a sedan. Scion is a coupe.'; 
echo str_replace($a,'car',str_replace('Lexus','Toyota',$str)); 
+0

似乎没有工作。它不会取代带有“汽车”的“卡车”......结果最终成为“本田是一辆汽车,雷克萨斯是一辆轿车,日产是轿车,Scion是一辆。 –

+0

更新了我的答案 - 第二个参数必须是单个字符串以允许多个替换。对不起。 –

+0

谢谢!这工作正是我想要的方式。谢谢!!! –

1

喜欢的东西

$a = array('truck', 'vehicle', 'seddan', 'coupe'); 

$str = 'Honda is a truck. Toyota is a vehicle. Nissan is a sedan. Scion is a coupe.'; 

echo str_replace($a,'car',$str); 

应该工作。

http://codepad.org/1LhtcOSR

编辑:

像这样的东西应该产生预期的结果:http://pastebin.com/xGzYiCk3

$text = '{test|test2|test3} some other stuff {some1|some2|some3}'; 

输出:

 
test3 some other stuff some1 
test2 some other stuff some2 
test3 some other stuff some3 
test3 some other stuff some1 
+0

感谢这个代码工作。 –

+0

很高兴我可以帮助你,怎么样upvote:D 谢谢! –

+0

嗨,我试着给你一个投票,但它不让我。我是新来的。你能为我纠正这个代码吗? http://codepad.org/DhPgwPCR谢谢 –

1

您应该使用strtr

echo strtr($str,array_combine($a,$b)); 

或者只是结合$a$b成一个阵列

$ab = array('truck' => 'car','vehicle' => 'car','sedan' => 'var','coupe' => 'var','Toyota' => 'Lexus'); 
echo strtr($str, $ab); 

输出

Honda is a car. 
Lexus is a car. 
Nissan is a car. 
Scion is a car. 
1

我发现了一个很简单的解决方案在一个字符串替换多个单词:

<?php 
$str=" Honda is a truck. 
Toyota is a vehicle. 
Nissan is a sedan. 
Scion is a coupe."; 


$pattern=array(); 
$pattern[0]="truck"; 
$pattern[1]="vehicle"; 
$pattern[2]="sedan"; 
$pattern[3]="coupe"; 



$replacement=array(); 
$replacement[0]="car"; 
$replacement[1]="car"; 
$replacement[2]="car"; 
$replacement[3]="car"; 



echo str_replace($pattern,$replacement,$str);?> 

输出:

Honda is a car. 
Toyota is a car. 
Nissan is a car. 
Scion is a car 

有了这个脚本,你可以在一个字符串,只要你想更换尽可能多的单词:

只需将字(要替换)模式阵列中,如:

 $pattern[0]="/replaceme/"; 

和放置的字符(这将代替替换的字符被使用)更换阵列中,例如:

 $replacement[0]="new_word"; 

快乐编码!

+0

这个例子还可以和** preg_replace()函数一起使用,如果你想使用** preg_replace **而不是str_replace,例如:pattern [0] =“/ truck /”,则分隔模式字符串。 – starkeen