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