好的,所以我想知道是否有任何(其他的,最好是简单的)方法将字符串转换为变量。
我的代码有效,如下:
echo eval('return $'. $date . ';');
$ date包含一个字符串。现在,代码可以工作了,我可以保留它,因为它是没有别的,因为$ date是从预编程的类声明中调用的:
Time::Format($id = 'id', $name = 'name', $date = 'date->format(Y)');
我问的原因是由于PHP官方对其使用的免责声明/警告:eval()语言结构非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证除了使用此构造之外没有其他选择,请特别注意不要将任何用户提供的数据传递到其中,而不事先正确验证它。
因此,我认为我可以安全地使用它,因为没有用户输入的数据被PHP评估,它是我设置为编码器的字符串,但我想要使用第二个意见,如以及另一个简单方法的任何输入(因为,如果我可以避免它,我宁愿不使用复杂的,可能很长的代码块来完成可以简单完成的事情(前提是快速安全)又脏了。
答案 0 :(得分:7)
PHP的变量变量可以帮到你。您可以通过在变量前添加另一个美元符号来使用它们:
$foo = "Hello, world!";
$bar = "foo";
echo $$bar; // outputs "Hello, world!"