#php #foreach #str-replace
#php #foreach #str-replace
Вопрос:
Мой код:
$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}
сам по себе, но он не заменяет его значениями, заданными в массиве.
Почему он не работает?
Комментарии:
1. Что возвращает $ final?
2. Вы имели в виду присваивать, а не добавлять к финалу? У вас есть =, но, может быть, вы хотите.=.
3. @mqsoh Мне просто нужно
$_POST['content']
, чтобы содержимое было заменено значениями в массиве, мне не нужно ничего добавлять.
Ответ №1:
Этот код делает именно то, что вам нужно (без каких-либо дополнительных циклов):
$final = strtr($_POST['content'], $str);
Ответ №2:
используйте
$final = str_replace('{'.$key.'}', $val, $text);
Ответ №3:
Возможно, другое завершение, попробуйте это:
$text = utf8_decode($_POST[‘content’]);// или utf8_encode
перед циклом;
Удачи!