简单的字符串替换字符

时间:2019-03-27 15:44:29

标签: php string

我有一个字符串,例如:

"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,但它说的是“数组到字符串的转换”

4 个答案:

答案 0 :(得分:5)

如果能够更改在字符串中定义占位符的方式,则应使用sprintfCheck 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]);