2009-02-11 4 views
19

Есть встроенная функция PHP для замены нескольких значений внутри строки массивом, который точно определяет, что заменяется на что?Поиск и замена нескольких значений несколькими/разными значениями в PHP5?

Например:

$searchreplace_array = Array('blah' => 'bleh', 'blarh' => 'blerh'); 
$string = 'blah blarh bleh bleh blarh'; 

и полученный в результате будет: "BLEH blerh BLEH BLEH blerh.

+6

Этот образец текста ужасно трюк. –

+0

хороший вопрос: D – ncomputers

ответ

62

Вы ищете str_replace().

$string = 'blah blarh bleh bleh blarh'; 
$result = str_replace(
    array('blah', 'blarh'), 
    array('bleh', 'blerh'), 
    $string 
); 

// Дополнительный совет:

И если вы застряли с ассоциативным массивом, как в вашем примере, вы можете разбить его так:

$searchReplaceArray = array(
    'blah' => 'bleh', 
    'blarh' => 'blerh' 
); 
$result = str_replace(
    array_keys($searchReplaceArray), 
    array_values($searchReplaceArray), 
    $string 
); 
1

str_replace() делает это.

Вы можете проверить manual для более подробного объяснения.

0

за то, что 've got there, просто передайте этот массив в str_replace как для поиска, так и для замены (используя array_keys в параметре поиска, если вы хотите сохранить массив как есть).

16
$string = 'blah blarh bleh bleh blarh'; 
$trans = array("blah" => "blerh", "bleh" => "blerh"); 
$result = strtr($string,$trans); 

Подробное описание можно найти в manual.

+0

Спасибо, что он работает для меня. – Hardik

+0

Я использовал тот же самый для замены массива :) путем преобразования массива и его замены :) – Shan

+0

отличный ответ, спасибо! : D – ncomputers