2009-06-01 37 views
12

đầu ra là như dưới đây được phục hồi trong một file output.txt:làm thế nào để đọc đầu ra của var_export thành một biến trong 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' => '', 
) 

đó là sản lượng thực tế của var_export(my_variable,true), nhưng làm thế nào để đọc nó vào một biến một lần nữa?

Trả lời

16

như thế này:

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

Hãy * rất cẩn thận với eval và chỉ sử dụng nó nếu bạn hoàn toàn chắc chắn rằng người dùng không thể tiêm bất kỳ mã nào. – Matthew

+1

đồng ý về mối nguy hiểm ở đó. do đó nhận xét của tôi cho câu trả lời của Zilupe. –

+0

Ngoài ra, nó phải là eval ('$ somevar ='. $ DumpStr); như + chỉ được sử dụng để bổ sung. (Nếu tôi nhớ chính xác.) – grawity

15

Có lẽ bạn muốn serialize đối tượng và sau đó unserialize? http://php.net/serialize

+0

cấu trúc dữ liệu được khôi phục trong một tệp. Có thể nhập trực tiếp mà không cần tuần tự hóa không? – omg

+1

vâng, đây có lẽ là điều anh ta muốn. Và an toàn hơn việc sử dụng eval –

+0

có điều này tốt hơn nhiều so với việc sử dụng eval – Galen

1

Kỹ thuật này phù hợp cho bộ nhớ cache dữ liệu.

< ?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'; 
?> 
Các vấn đề liên quan