我有一个字符串,例如:
"Hello ? My name is ? I am ? years old"
我有一个数组,如:
['George','Jonathan',35]
我想要合并并返回的结果:
`Hello "Geroge" My name is "Jonathan" I am "35" years old`
我如何在php中完成此操作?
我尝试使用str_ireplace
,但它说的是“数组到字符串的转换”
答案 0 :(得分:5)
如果能够更改在字符串中定义占位符的方式,则应使用sprintf
。 Check out the manual。
简单的例子:
$result = sprintf("Hello %s My name is %s I am %d years old", 'George', 'Jonathan', 35);
在您的情况下,可以使用splat运算符(php> = 5.6)来传递变量:
$variables = ['George', 'Jonathan', 35];
$result = sprintf("Hello %s My name is %s I am %d years old", ...$variables);
正如其他人指出的那样,vsprintf
函数可能是更好的方法。 See devpro's answer.
答案 1 :(得分:3)
您可以使用vsprintf()
,因为您想将其替换为数组:
<?php
$array = ['George','Jonathan',35];
$content = vsprintf("Hello %s My name is %s I am %s years old", $array);
echo $content; // Hello George My name is Jonathan I am 35 years old
摘自PHP手册: vsprintf()
以sprintf()
的形式运行,但接受参数数组,而不是可变数量的参数。
以上是一种解决方案,但是如何从字符串中更改?
,在这里您可以使用str_replace()
替换为%s
。
答案 2 :(得分:2)
我会尝试这样的事情。然后,您仍然可以将 <p>
<input type="radio" name="os" id="linux" value="Linux">
<label for= "linux">Linux Distro</label>
</p>
用作问号。同样,类型和数量也不固定。
?
答案 3 :(得分:1)
要设置变量数组,可以使用call_user_func_array:
<?php
call_user_func_array('sprintf', ['Hello %s My name is %s I am %d years old', 'George', 'Jonathan', 35]);