2012-09-30 59 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