Как читать вывод var_export в переменную в PHP?

вывод в файле output.txt выглядит следующим образом:

array (
  'IMType' => '1',
  'Email' => '[email protected]',
  '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' => '',
)

это фактически вывод var_export(my_variable,true), но как снова прочитать его в переменной?

Ответ 1

как это:

$dumpStr = var_export($var,true);
eval('$somevar = ' . $dumpStr.';');

Ответ 2

Возможно, вы хотите сериализовать объект, а затем unserialize? http://php.net/serialize

Ответ 3

Этот метод хорош для кэширования данных:

<?php
// reading data from DB or an API webservice etc.
$arrName = array();    
$arrName = call_procedure_here();

$strFileContent = '<?php' . PHP_EOL . '$arrName = ' . var_export($arrName,true) . ';' . PHP_EOL . '?>';
file_put_contents('cache_folder/arrayfilename.php', $strFileContent);

// later... from another process
include 'cache_folder/arrayfilename.php';
?>

Ответ 4

это очень просто, вы должны сохранить его как PHP файл, а не TXT, а затем

просто включите его в переменную :)

как это:

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

когда вам нужно получить к нему доступ, просто сделайте это:

$data = include '/some/file/data.php'

Ответ 5

Я написал базовый парсер var_export, без eval: VarExportParser.php

Использование:

require_once('VarExportParser.php');
$parsed = VarExportParser::parse("array ('IMType' => '1', 'Email' => '[email protected]')");
print(json_encode($parsed).PHP_EOL);

Выходы:

{"IMType":"1","Email":"[email protected]"}

Вы можете попробовать его js-версию здесь: text_transform.html (кнопка var_export to json)