如何在PHP中将var_export的输出读入变量?

omg*_*omg 16 php import

输出如下所示在output.txt文件中恢复:

array (
  'IMType' => '1',
  'Email' => 'test@gmail.com',
  'SignupName' => 'test11',
  'Password' => '11111',
  'Encrypted' => '',
  'Confirm' => '11111',
  'OldPassword' => '',
  'Name' => 'test',
  'SignupProvinceText' => 'province',
  'SignupCity' => 'cityname',
  'Street' => 'street x.y',
  'SignupIndustry' => 'IT',
  'SignupCompany' => 'jobirn',
  'SignupJt' => 'engineer',
  'CellPhoneNum' => '',
  'linked_in' => '',
)
Run Code Online (Sandbox Code Playgroud)

它实际上是输出var_export(my_variable,true),但如何再次将其读入变量?

Jon*_*and 19

像这样:

$dumpStr = var_export($var,true);
eval('$somevar = ' . $dumpStr.';');
Run Code Online (Sandbox Code Playgroud)

  • eval非常小心,只有在100%完全确定用户无法注入任何代码时才使用它. (10认同)
  • 有时您应该添加`;`来评估变量.例如:`eval('$ somevar ='.$ dumpStr.';');` (4认同)

jba*_*sko 18

也许你想序列化对象然后反序列化? http://php.net/serialize

  • @Jonathan,它并不比eval更安全.引自[doc](http://php.net/manual/en/function.unserialize.php):**警告**不要将不受信任的用户输入传递给unserialize().由于对象实例化和自动加载,反序列化可能导致代码被加载和执行,恶意用户可能能够利用它.如果需要将序列化数据传递给用户,请使用安全的标准数据交换格式,如JSON(通过json_decode()和json_encode()). (4认同)
  • 是的,这可能是他想要的.并且比使用eval更安全 (2认同)

S.K*_*deh 5

它非常简单,您必须将其保存为 php 文件而不是 txt 然后

只需将它包含在一个变量中:)

像这样:

file_put_contents( '/some/file/data.php', '<?php return '.var_export( $data_array, true ).";\n" );
Run Code Online (Sandbox Code Playgroud)

当您需要访问它时,请执行以下操作:

$data = include '/some/file/data.php'
Run Code Online (Sandbox Code Playgroud)

  • @AlexanderGarden你错了。当您在 php 文件中返回结果时,您可以通过包含在另一个变量中来获取值,就像我对 $data 所做的那样。从 php.net 查看此链接的 5# 示例 -&gt; https://www.php.net/manual/en/function.include.php (2认同)