2012-02-17 88 views
2

我通过“var_export($ schools,true)”将变量输出到textarea,因此用户可以对其进行编辑。然后我想用所做的更改'更新'变量。更新通过POST方法接收。在PHP中var-export函数的反义词是什么?

我有一些文字我想成为变量。我怎样才能做到这一点?

我现在要做的是我在.php文件中手动编辑变量。我想给用户的网页界面做同样的事情。不会有任何安全问题,因为这只是严格的内部工具。

样品变量

$schools = array(

    "PHCS"=> array(
     "full_name"=> "Pacific Hills Christian School", 
     "version"=> "4.0.2b", 
     "etc"=> "etc" 
    ), 

    "WAC"=> array(
     "full_name"=> "Wollondilly Anglican College", 
     "version"=> "4.0.1", 
     "etc"=> "etc" 
    ), 
); 
+3

我不敢说'eval'。你不能使用像JSON这样的简单格式,它有一个专门的分析方法吗? – deceze 2012-02-17 05:51:01

+0

更多的信息会对您有所帮助。你将如何从该文本框中检索数据?通过post,通过jQuery或JavaScript与事件监听器等。 – busypeoples 2012-02-17 05:53:26

+0

有一个非常有趣的函数称为'print_r_reverse()',几年前由用户提交。看看它:http://www.php.net/manual/en/function.print-r.php#93529 – 2012-02-17 05:57:27

回答

2

你会考虑使用由于存在安全风险,使用哪种方法相当具有争议性。

我建议你使用serialize()unserialize(),或者甚至更好的JSON函数。

JSON编码/解码是显示给用户的最佳选择,因为它的可读性很好。

+0

eval()很好地工作,谢谢。 – Radek 2012-02-17 06:48:09

0

继php.net的建议,如果你打算改变你应该使用序列化和反序列化对象:

$var = serialize(array('hello')); 
// string(22) "a:1:{i:0;s:5:"hello";}" 
var_dump(unserialize($var)); 
+0

序列化不适合在问题中使用,用户必须计算字符串中字符的数量才能正常工作。 – wyqydsyq 2012-02-17 06:01:58