2013-03-03 102 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(對於「字符串」)。