str_replace не работает с foreach

Мой код:

$str = array(
        '{$string1}' => 'anything2',
    '{$string2}' => 'something1',
    '{$string3}' => '...'
);

$final = "";
$text = $_POST['content'];
foreach( $str as $key => $val ) {
      $final = str_replace($key, $val, $text);
}

Мой $text офц. имеет {string1} , {string2} и {string3}, но не заменяет их значениями, указанными в массиве.

Почему он не работает?


person Cyclone    schedule 25.10.2011    source источник
comment
Что возвращает $final?   -  person Chris Bornhoft    schedule 25.10.2011
comment
Вы имели в виду назначить, а не добавлять к финалу? У вас есть =, но, может быть, вы хотите .=.   -  person mqsoh    schedule 25.10.2011
comment
@mqsoh Мне просто нужно заменить содержимое $_POST['content'] значениями в массиве, мне не нужно ничего добавлять.   -  person Cyclone    schedule 25.10.2011


Ответы (3)


Этот код делает именно то, что вам нужно (без лишних циклов):

$final = strtr($_POST['content'], $str);
person zerkms    schedule 25.10.2011

использовать

 $final = str_replace('{'.$key.'}', $val, $text);

Ссылка: http://php.net/manual/en/function.str-replace.php

person bilash.saha    schedule 25.10.2011

Возможно, другая кодировка, попробуйте это:

$text = utf8_decode($_POST['content']);// или utf8_encode

перед циклом;

Удачи!

person orafaelreis    schedule 17.05.2012