我想从像
这样的表单输入中返回一个json_encoded字符串<input name="test" value="array(1,2,3)">
php应该返回:[1,2,3]
我可以通过eval做到:eval("\$str=json_encode($test);");
然后在用户输入上运行eval听起来就像是在寻找麻烦。
还有其他选择吗?
答案 0 :(得分:0)
这是另一种从字符串运行PHP代码而不使用eval
function fakeEval($phpCode) {
$tmpfname = tempnam("/tmp", "fakeEval");
$handle = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
fclose($handle);
include $tmpfname;
unlink($tmpfname);
return get_defined_vars();
}
extract(fakeEval('$test='. $_POST['test'].';'));
$json = json_encode($test);
答案 1 :(得分:0)
将输入创建为PHP要处理的数组要容易得多:
http://www.php.net/manual/en/faq.html.php#faq.html.arrays
HTML
<input name="test[]" value="1" />
<input name="test[]" value="2" />
<input name="test[]" value="3" />
PHP
<?php
$test = $_POST['test'];
$jsonTest = json_encode($test);
// ...