我想從一個表單輸入返回json_encoded字符串這樣Json_encode用戶輸入(PHP代碼)沒有評估?
<input name="test" value="array(1,2,3)">
PHP應該返回:[1,2,3]
我可以EVAL實現它這樣做的:eval("\$str=json_encode($test);");
但隨後運行在用戶的eval輸入聲音就像在尋找麻煩。
還有其他的選擇嗎?
我想從一個表單輸入返回json_encoded字符串這樣Json_encode用戶輸入(PHP代碼)沒有評估?
<input name="test" value="array(1,2,3)">
PHP應該返回:[1,2,3]
我可以EVAL實現它這樣做的:eval("\$str=json_encode($test);");
但隨後運行在用戶的eval輸入聲音就像在尋找麻煩。
還有其他的選擇嗎?
這裏是從字符串運行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);
這將是很容易爲數組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);
// ...
您能否給一些背景,以你想要做什麼? –
我試圖做一個json_encode在線工具... – devBorg
爲什麼不只是echo json_encode($ test); ? – arleslie