我有一个非常简单的问题。但真的让我抓狂。
我有一个声明说:
示例和示例具有一个 php 变量,例如 $loggedin_user_name
首先,我想将上面的语句存储在 MySQL 数据库中,然后在我想打印上面的语句时将其取回。似乎他们没有问题。
但是当我从数据库中提取数据后尝试打印数据时,它正在打印相同的语句。但我想,它必须打印登录的用户名,而不是$loggedin_user_name
上面的语句。
那么,是否可以在变量中打印变量?如果是,请提出一种方法。
我有一个非常简单的问题。但真的让我抓狂。
我有一个声明说:
示例和示例具有一个 php 变量,例如 $loggedin_user_name
首先,我想将上面的语句存储在 MySQL 数据库中,然后在我想打印上面的语句时将其取回。似乎他们没有问题。
但是当我从数据库中提取数据后尝试打印数据时,它正在打印相同的语句。但我想,它必须打印登录的用户名,而不是$loggedin_user_name
上面的语句。
那么,是否可以在变量中打印变量?如果是,请提出一种方法。
$str = "example and example with one php variable like %s";
然后从数据库中加载并填写
$out = sprintf($str, $loggedin_user_name);
如果它总是相同的变量名,我建议使用
echo str_replace($fromDb, '$variableToReplace', $variableToReplace);
您可以使用 preg_match 在字符串中查找变量名,然后将其替换为 str_replace。
$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).
您可以使用 eval 函数,它可以像您的示例一样使用:
$loggedin_user_name = 'bilal';
$str = "example and example with one php variable like $loggedin_user_name";
eval("\$str = \"$str\";");
echo $str;
缺点:
最好是连接一个字符串:
$exampleWithUsername = 'example' . $loggedin_user_name;
echo $exampleWithUsername;
'example' 是一个硬编码的字符串,但你可以给它一个包含字符串 $example 的变量,或者直接将 $username 连接到 $example 中。