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

时间:2018-08-27 08:14:24

标签: php arrays string str-replace

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

您的代码很好。 strtr()支持多字节字符串,但应使用数组strtr(string, array)。示例:

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

答案 1 :(得分:0)

使用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替换了{{first_name}}。然后,我用$ str1中的$ last替换了{{last_name}}。

答案 2 :(得分:0)

对于不区分大小写的版本,您可以使用str_replace()str_ireplace()

这里以示例作为代码,

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

答案 3 :(得分:0)

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