【问题标题】:What's the opposite of var-export function in php?php中的var-export函数的反面是什么?
【发布时间】:2021-05-14 18:43:15
【问题描述】:

我通过“var_export($schools,true)”将变量导出到文本区域,以便用户对其进行编辑。然后我想用所做的更改“更新”变量。更新是通过 POST 方法接收的。

我有一些文本想要成为变量。我该怎么做?

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

变量示例

$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"
      ),
  );

【问题讨论】:

  • 我不敢说eval。不能使用像 JSON 这样更简单的格式,它有专门的解析方法吗?
  • 更多信息会有所帮助。您将如何从该文本字段中检索数据?通过帖子,通过带有事件监听器的 jquery 或 javascript 等。
  • 有一个很有趣的函数叫做print_r_reverse(),是几年前一个用户提交的。看看吧:php.net/manual/en/function.print-r.php#93529
  • @busypeoples:我通过 POST 获取数据。
  • 避免评估。如果用户破坏了那个多数组,你会怎么做?它被保存到哪里?有一种更好更简单的方法。 PHCS 和 $schools 中的所有其他数组是否具有相同的结构。然后你可以通过编写一个类来轻松解决问题。

标签: php variable-assignment


【解决方案1】:

您会考虑使用 eval(),由于安全风险,该使用颇具争议。

我建议您改用serialize()unserialize(),或者更好的是JSON 函数。

JSON 编码/解码将是向用户显示的最佳选择,因为它具有相当的可读性。

【讨论】:

    【解决方案2】:

    按照 php.net 上的建议,如果您打算更改对象,您应该使用序列化和反序列化:

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

    【讨论】:

    • 序列化不适合在问题中使用,用户必须计算字符串中的字符数才能正常工作。
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多