Заменить {{word}} в строке - PullRequest
0 голосов
/ 27 августа 2018

Есть строка: $str = "Hello, {{first_name}} {{last_name}}!";

И переменные $first, $last... в массив

$trans = array("{{first_name}}" => $first, "{{last_name}}" => $last, "{{cart}}" => $crt1, "{{phone}}" => $phone, "{{adds}}" => $addr, "{{order_id}}" => $order_id);

Как заменить {{first_name}}->$first, {{last_name}}->$last

Вот что я сделал:

function replace_str($str, $trans)
{
    $subj = strtr($str, $trans);
    return $subj;
}

$cart = replace_str($str,$trans);

Но strtr не работает с кириллицей (utf-8)

Ответы [ 4 ]

0 голосов
/ 27 августа 2018

Вы можете использовать str_replace с array_keys .

Код PHP:

<?php
$str = "Hello, {{first_name}} {{last_name}}!";
$first = "ХѠЦЧШЩЪЪІ";
$last = "ЬѢꙖѤЮѪ";
$crt1 = "";
$phone = "";
$addr = "";
$order_id = "";
$trans = array("{{first_name}}" => $first, "{{last_name}}" => $last, "{{cart}}" => $crt1, "{{phone}}" => $phone, "{{adds}}" => $addr, "{{order_id}}" => $order_id);

echo str_replace(array_keys($trans), array_values($trans), $str);

Проверьте вывод в: https://3v4l.org/0fCv3

См .:

  1. http://php.net/manual/en/function.str-replace.php

  2. http://php.net/manual/en/function.array-keys.php

0 голосов
/ 27 августа 2018

Ваш код в порядке.strtr() поддерживает многобайтовые строки, но следует использовать форму массива strtr(string, array).Пример:

$str = "Hello {{first_name}}!";
$first_name = "мир.";
$trans = ['{{first_name}}' => $first_name];
echo strtr($str, $trans); // Hello мир.! 
0 голосов
/ 27 августа 2018

Вы можете использовать str_replace () или str_ireplace () для версии без учета регистра.

Вот пример в качестве вашего кода,

str_replace(array_keys($trans), $trans, $str);
0 голосов
/ 27 августа 2018

используйте str_replace (); , вы можете решить вашу проблему.

$str = "Hello, {{first_name}} {{last_name}}!";
$str1 = str_replace("{{first_name}}",$first,$str);
$str2 = str_replace("{{last_name}}",$last,$str1);
echo $str2;

Сначала я заменил {{first_name}} на $ first в $ str. Затем я заменил {{last_name}} на $ last в $ str1.

...