2015-04-22 92 views
0

我一直在尋找這一段時間..這可能很簡單,但我似乎無法做到正確。PHP - 從數據庫中獲取值並顯示已知值

我的網站使用帶翻譯的文件。每個翻譯都有它自己的變量。
像:$_text_login(它轉換爲:登錄或Aanmelden或Derp)。

我在我的數據庫中創建了一個菜單表。其中一個菜單項有文字:$_text_login

顯然,當我得到菜單信息時,它沒有顯示當前設置的變量值,它只是顯示$_text_login

我試過eval()但是,這並不工作..

誰能幫助?

+0

如果$ _text_login是一個變量,要渲染的STR它包含,你需要回聲。例如:<?= $ _ text_login;?> – Kisaragi

+0

所以基本上你需要幫助讓你的模板系統工作? –

+0

如果你不得不求助於'eval()'或*變量變量* hacks來讓它起作用,無論如何,這對我來說意味着你做的事情很奇怪(或者錯誤)。如果我是你並且重新思考,我可能會回到這個畫板上。 – CD001

回答

0

我不推薦這種方法,我會santize變量名,但是從它的聲音,你可以實現你說的話有:

echo eval('return '. $item . ';'); 

凡$項目會從結果數據庫。

0

可以說$row是您從數據庫中收到的結果,而text是包含該變量的列的名稱。 然後,你可以這樣做:

echo $$row['text']; 

如果$row['text']_text_login這應該輸出的$_text_login值。 數據庫中不應該有$。

http://php.net/manual/en/language.variables.variable.php

0

根據PHP的文檔,你可以只使用$$varname結構:我的意思是:

<?php 
$fruit = "apple"; 
$variable = "fruit"; 

print_r($$variable); //outputs apple 
0

明白了!謝謝..

評估和演示工作做最後。因爲我相匹配的實際變量... 我覺得自己很蠢,現在..

而($ main_obj = $ query_mainmenuitems-> fetch_object()){

  if (preg_match('/\$text_/',$main_obj->value)) { 
       $mainmenu_title = eval('return '.$main_obj->value.';'); 
      } else { 
       $mainmenu_title = $main_obj->value; 
      } 

}

它不應該是$ _text_logon ..我的所有的翻譯有$ text_ [無論]

相關問題