2015-04-22 79 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_ [无论]

相关问题