替换字符串中的 {{word}}

Replace {{word}} in string

有一个字符串:$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)

使用str_replace(); , 你可以解决你的问题。

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

首先,我将 $str 中的 {{first_name}} 替换为 $first。然后我在 $str1.

中用 $last 替换了 {{last_name}}

你的代码没问题。 strtr() 支持多字节字符串,但应使用数组形式 strtr(string, array)。示例:

$str = "Hello {{first_name}}!";
$first_name = "мир.";
$trans = ['{{first_name}}' => $first_name];
echo strtr($str, $trans); // Hello мир.! 

您可以使用 str_replace() or str_ireplace() 不区分大小写的版本。

此处作为您的代码示例,

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

您可以将 str_replacearray_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