2010-03-08 100 views
19

您可以使用str_replace()函數數組:如果你有關聯數組str_replace()函數與關聯數組

$array_from = array ('from1', 'from2'); 
$array_to = array ('to1', 'to2'); 

$text = str_replace ($array_from, $array_to, $text); 

可是什麼?

$array_from_to = array (
'from1' => 'to1'; 
'from2' => 'to2'; 
); 

如何將它與str_replace()一起使用?
速度事項 - 陣列足夠大。

回答

37

$text = strtr($text, $array_from_to)

順便說一句,這仍然是一個一維的 「陣列」。

+0

是的,我的不好。改變了它 – Qiao 2010-03-08 04:37:51

+0

它不是說明問題的完美解決方案(原因長度應該是相同的),但它是在我的情況理想。速度很快。 – Qiao 2010-03-08 04:48:39

+3

'strtr'可以正常使用與搜索值長度不同的替換值。它和'str_replace'的區別在於'strtr'只會做一次翻譯(最長的時候會先匹配),這會更快(但結果不同)。例如,['ab'=>'c','c'=>'d']會將'ab'翻譯爲'c',而使用str_replace時,它將變成'd'。 – Matthew 2010-03-08 04:54:15

1
$keys = array_keys($array); 
$values = array_values($array); 
$text = str_replace($key, $values, $string); 
24
$array_from_to = array (
    'from1' => 'to1', 
    'from2' => 'to2' 
); 

$text = str_replace(array_keys($array_from_to), $array_from_to, $text); 

to場會忽略你的數組中的鍵。這裏的關鍵功能是array_keys

+1

哇!這裏非常巧妙地使用函數。即使在2014年,這個作品非常漂亮! – arrayown 2014-05-16 05:27:42

+1

謝謝@ user1383815 - 時間過得真快:這種感覺後只是遠距傳送。 – mauris 2014-05-16 16:17:21

+0

能$ array_from_to在不同的順序比array_keys遍歷()返回? – PhoneixS 2018-02-02 10:57:48

2
$search = array('{user}', '{site}'); 
$replace = array('Qiao', 'stackoverflow'); 
$subject = 'Hello {user}, welcome to {site}.'; 

echo str_replace ($search, $replace, $subject); 

結果在Hello Qiao, welcome to stackoverflow.

$array_from_to = array (
    'from1' => 'to1'; 
    'from2' => 'to2'; 
); 

這不是一個二維數組,它是一個關聯數組。

擴展在第一個例子,我們的$搜索作爲數組的鍵和$更換,因爲它的價值,代碼是這樣的。

$searchAndReplace = array(
    '{user}' => 'Qiao', 
    '{site}' => 'stackoverflow' 
); 

$search = array_keys($searchAndReplace); 
$replace = array_value($searchAndReplace); 
# Our subject is the same as our first example. 

echo str_replace ($search, $replace, $subject); 

結果在Hello Qiao, welcome to stackoverflow.

3
$text='yadav+RAHUL(from2'; 

    $array_from_to = array('+' => 'Z1', 
         '-' => 'Z2', 
         '&' => 'Z3', 
         '&&' => 'Z4', 
         '||' => 'Z5', 
         '!' => 'Z6', 
         '(' => 'Z7', 
         ')' => 'Z8', 
         '[' => 'Z9', 
         ']' => 'Zx1', 
         '^' => 'Zx2', 
         '"' => 'Zx3', 
         '*' => 'Zx4', 
         '~' => 'Zx5', 
         '?' => 'Zx6', 
         ':' => 'Zx7', 
         "'" => 'Zx8'); 

    $text = strtr($text,$array_from_to); 

    echo $text; 

//output is 

yadavZ1RAHULZ7from2