2013-04-18 41 views
0

的想法是搜索特定詞的字符串,並根據特定陣列他們變成別的東西的話。讓我告訴你我的意思。搜索字符串替換陣列的價值

$string = "hello buddy, I'm your friend or maybe a fellow";  

讓我們假設friends是一個發誓詞。我想把這個詞改成我想要的。所以我做了這個:

$swears = array(
"friend" => "fri**d", 
"buddy" => "bu**y", 
"fellow" => "fe**ow" 
); 

我想根據數組的鍵搜索字符串,並將其替換爲它的值。我沒有搜索網頁,我得到的是根據數組鍵替換數組中的值。所以嘗試後,我想出了這個:

$string = "hello buddy, I'm your friend or maybe a fellow"; 

$swears = array(
"friend" => "fri**d", 
"buddy" => "bu**y", 
"fellow" => "fe**ow" 
); 

$foreach = $string; 
foreach($swears as $bad => $good){ 
$foreach  = str_replace($bad,$good,$foreach); 
$filtered = $foreach; 
} 
echo $filtered; 

我知道它的工作原理,但有一種簡單的方法,我覺得我複雜了整個事情。如果我很好,是否有可能會導致問題,如果我有很大的字符串,或者需要時間來處理它。

回答

8

str_replace可能與搜索詞array和替代品的array提供:

<?php 
$string = "hello buddy, I'm your friend or maybe a fellow"; 

$swears = array(
    "friend" => "fri**d", 
    "buddy" => "bu**y", 
    "fellow" => "fe**ow" 
); 

echo str_replace(array_keys($swears), array_values($swears), $string); 
?> 

表演:

hello bu**y, I'm your fri**d or maybe a fe**ow 
+0

感謝...這是有益的,更好的。 – 2013-04-18 04:17:13

1

的問題是,你選擇把單詞和替換爲鍵和值在一個數組中。更簡單的方法是使用2個索引數組。

$words = array('friend', 'buddy', 'fellow'); 
$replacements = array('fri**nd', 'bu**dy', 'fe**ow'); 

$result = str_replace($words, $replacements, $yourString); 

這樣,您不必使用array_keys隱式創建新數組。

如果你絕對要存儲的搜索/替換關聯數組,在這種情況下不使用str_replace和使用strtr

$swears = array(
    "friend" => "fri**d", 
    "buddy" => "bu**y", 
    "fellow" => "fe**ow" 
); 

$filtered = strtr($string, $swears);