不太确定如何说出这个问题,但我会举一个例子。
$string = 'Hey, $name. How are you?';
发布此字符串时,$name
不会更改。我怎样才能做到这一点,所以我可以把+name+
这样的东西改成名字。我已经尝试过搜索但我不知道该搜索什么,所以我没有运气。它可能很简单,但我只是在消隐。
感谢
答案 0 :(得分:19)
您可以使用占位符和str_replace
。或者使用PHP的内置sprintf
并使用%s
。 (从v4.0.6开始,你可以根据需要交换参数的顺序。)
$name = 'Alica';
// sprintf method:
$format = 'Hello, %s!';
echo sprintf($format, $name); // Hello, Alica!
// replace method:
$format = "Hello, {NAME}!";
echo str_replace("{NAME}", $name, $format);
并且,对于任何想知道的人,我明白这是模板字符串的问题,而不是PHP的集成连接/解析。我只是假设保持这个答案,因为我仍然不能100%确定这个OP的意图
答案 1 :(得分:11)
I've always been a fan of strtr
.
$ php -r 'echo strtr("Hi @name. The weather is @weather.", ["@name" => "Nick", "@weather" => "Sunny"]);'
Hi Nick. The weather is Sunny.
The other advantage to this is you can define different placeholder prefix types. This is how Drupal does it; @
indicates a string to be escaped as safe to output to a web page (to avoid injection attacks). The format_string command loops over your parameters (such as @name
and @weather
) and if the first character is an @
, then it uses check_plain
on the value.
答案 2 :(得分:8)
如果要扩展变量,应该用双引号("
)包装字符串:
$name = "Alica";
$string = "Hey, $name. How are you?"; // Hey, Alica. How are you?
答案 3 :(得分:1)
第三种解决方案,不比上述更好或更差,是串联:
echo 'Hello '. $name .'!!!';