如何手动插入字符串? [重复]

问题描述 投票:7回答:3

我发现插入字符串(即扩展其中的变量)的唯一方法是:

$str = 'This is a $a';
$a = 'test';
echo eval('return "' . $str . '";');

请记住,在实际情况下,字符串是在不同的位置创建的,所以我不能只将'替换为"

是否有更好的方法可以在不使用eval()的情况下扩展单引号字符串?我正在寻找PHP本身提供的东西。

请注意:使用strtr()就像使用sprintf()之类的东西。我的问题不同于该问题的可能重复部分中链接的问题,因为我让字符串控制它想要(即通过什么函数调用或属性访问器)获取内容的方式。

php string-interpolation
3个回答
0
投票

这里是一个可能的解决方案,不确定在您的特定情况下是否适合您,但是肯定会消除对这么多单引号和双引号的需要。

<?php
class a {
    function b() {
        return "World";
    }
}
$c = new a;
echo eval('Hello {$c->b()}.');
?>

4
投票

在字符串中替换占位符的机制比PHP字符串文字语法还多! sprintf

$str = 'This is a %s';
$a   = 'test';
echo sprintf($str, $a);

http://php.net/sprintf

有一个或多或少的其他[。选择最喜欢的一个。


1
投票
© www.soinside.com 2019 - 2024. All rights reserved.