2

我有一个非常简单的问题。但真的让我抓狂。

我有一个声明说:

示例和示例具有一个 php 变量,例如 $loggedin_user_name

首先,我想将上面的语句存储在 MySQL 数据库中,然后在我想打印上面的语句时将其取回。似乎他们没有问题。
但是当我从数据库中提取数据后尝试打印数据时,它正在打印相同的语句。但我想,它必须打印登录的用户名,而不是$loggedin_user_name上面的语句。

那么,是否可以在变量中打印变量?如果是,请提出一种方法。

4

6 回答 6

5

使用sprintf()

$str = "example and example with one php variable like %s";

然后从数据库中加载并填写

$out = sprintf($str, $loggedin_user_name);
于 2013-03-03T10:33:23.997 回答
0

如果它总是相同的变量名,我建议使用

echo str_replace($fromDb, '$variableToReplace', $variableToReplace);
于 2013-03-03T10:34:55.690 回答
0

您可以使用 preg_match 在字符串中查找变量名,然后将其替换为 str_replace。

于 2013-03-03T10:40:58.493 回答
0
$name = "ABC";
$bla = "$name";
echo $bla; //ABC

将始终为“ABC”,因为 PHP 在分配给 $bla 时正在评估您的变量。

您可以使用单引号来避免这种行为(如$bla='$name'; //$name)或引用 $ 符号(如$bla="\$name"; //$name)。然后,您可以将您想要的字符串存储到数据库中。

But you can not (only when using eval(), wich you MUST NOT DO in good PHP-Code) build this behaviour, that php has, when printing fulltext. Like Mentioned in another answer, you should use printf or sprintf and replace the $loggedin_user_name with %s (for "string).

于 2013-03-03T11:58:38.513 回答
-1

您可以使用 eval 函数,它可以像您的示例一样使用:

$loggedin_user_name = 'bilal';
$str = "example and example with one php variable like $loggedin_user_name";

eval("\$str = \"$str\";");
echo $str;

缺点:

  • 如果您作为参数提供给 eval 的 str 变量或字符串/代码由用户填充,则此用法会产生漏洞。
  • 如果评估代码中出现致命错误,则整个脚本将退出。
于 2013-03-03T10:37:15.947 回答
-1

最好是连接一个字符串:

$exampleWithUsername = 'example' . $loggedin_user_name;

echo $exampleWithUsername;

'example' 是一个硬编码的字符串,但你可以给它一个包含字符串 $example 的变量,或者直接将 $username 连接到 $example 中。

于 2013-03-03T10:42:10.463 回答