2009-06-01 4 views
12

la sortie est comme ci-dessous restauré dans un fichier sortie.txt:comment lire la sortie de var_export dans une variable en PHP?

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' => '', 
) 

il est en effet sortie de var_export(my_variable,true), mais comment le lire dans une variable à nouveau?

Répondre

16

comme ceci:

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

Soyez très prudent avec eval, et ne l'utilisez que si vous êtes complètement sûr que l'utilisateur ne peut pas injecter de code. – Matthew

+1

a convenu du danger là-bas. d'où mon commentaire à la réponse de Zilupe. –

+0

En outre, il devrait être eval ('$ somevar ='. $ DumpStr); as + est seulement utilisé pour l'addition. (Si je me souviens bien.) – grawity

15

Peut-être que vous voulez sérialiser l'objet puis unserialize? http://php.net/serialize

+0

la structure de données est restaurée dans un fichier. Peut-elle être importée directement sans sérialisation? – omg

+1

oui, c'est probablement ce qu'il veut. Et est plus sûr que d'utiliser eval –

+0

oui c'est beaucoup mieux que d'utiliser eval – Galen

1

Cette technique est bonne pour le cache de données.

< ?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'; 
?> 
Questions connexes