2013-03-03 101 views
2

我有一个非常简单的问题。但是真的让我发疯。是否可以通过变量打印php变量?

我有一份声明中说:

例子,例如有一个像$ loggedin_user_name

首先的PHP变量,我想存储在MySQL数据库上面的句子,然后把它只要我想打印上面的语句就回来。看来他们没有问题。
但是,当我试图从数据库中提取后打印数据时,它正在打印相同的语句。但我想,它必须在上面的语句中打印登录的用户名而不是$loggedin_user_name

那么,是否可以在变量内打印变量?如果是,请建议一种方法。

+0

你可以举一个简单的编码的例子吗? – samayo 2013-03-03 10:31:54

+0

是的!当然,让我再次编辑它 – 2013-03-03 10:32:49

回答

5

使用​​

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

然后从数据库加载它,并填写

$out = sprintf($str, $loggedin_user_name); 
0

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

echo str_replace($fromDb, '$variableToReplace', $variableToReplace); 
-1

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

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

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

缺点:

  • 如果您str变量或字符串/你给EVAL作为参数由用户填写的代码,这种用法会创建一个漏洞。
  • 如果评估代码中出现致命错误,则整个脚本将退出。
+2

-1没有提及缺点和**鼓励使用'eval' ** – 2013-03-03 10:43:14

+0

你是对的。因为我没有写错误,所以我鼓励使用eval。但我试图说“看看有这样一种方式”。另外,我不认为如果代码是由proggrammer(我从他这样的解释中理解的)创建的,它会导致问题。 – Bilal 2013-03-03 15:37:11

0

您可以使用preg_match在字符串中找到变量名称,然后用str_replace替换它。

-1

最好将concatinate字符串:

$exampleWithUsername = 'example' . $loggedin_user_name; 

echo $exampleWithUsername; 

“示例”是一个硬编码字符串,但你可以给它一个包含字符串变量$例如,或者直接concatinate $用户名到$例子。

0
$name = "ABC"; 
$bla = "$name"; 
echo $bla; //ABC 

永远是“ABC”,因为PHP在评估$ bla时正在评估您的变量。

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

但是,你不能(只有当使用eval(),至少你不能在良好的PHP代码中)建立这种行为,即PHP打印全文时的行为。 像在另一个答案中提到的,你应该使用printf或sprintf并用%s替换$ loggedin_user_name(对于“字符串”)。