数据库返回一个如下字符串:
"date_approved"=>"2015-01-01T10:19:44+00:00", "date_realized"=>"2015-01-01T10:31:11+00:00", "date_tn_approved"=>"2015-01-01T10:09:40+00:00"
将此转换为数组的最佳方法是什么,以便我可以轻松使用这些数据?
答案 0 :(得分:1)
这似乎是var_export
函数的输出。与此相反的是eval
但在安全性方面它被认为是一种不好的做法,所以你可以尝试:
$data = '"date_approved"=>"2015-01-01T10:19:44+00:00", "date_realized"=>"2015-01-01T10:31:11+00:00", "date_tn_approved"=>"2015-01-01T10:09:40+00:00"';
$result = array();
$items = explode(',', $data);
foreach($items as $item) {
$item_data = explode('=>', $item);
$result[trim($item_data[0], '"')] = trim($item_data[1], '"');
}
最后在$result
中,您将拥有一个包含此特定数据行的已解析数据的数组。
答案 1 :(得分:1)
我认为一种不错的方法是通过替换'=>'将该字符串转换为JSON格式字符串使用':',然后应用json_decode()。
$str = '"date_approved"=>"2015-01-01T10:19:44+00:00", "date_realized"=>"2015-01-01T10:31:11+00:00", "date_tn_approved"=>"2015-01-01T10:09:40+00:00"';
$str = '{'. str_replace('=>', ':', $str). '}';
$arr = json_decode($str, true);
// Test
var_export($arr);
//array ('date_approved'=>'2015-01-01T10:19:44+00:00', 'date_realized'=>'2015-01-01T10:31:11+00:00', 'date_tn_approved'=>'2015-01-01T10:09:40+00:00')
答案 2 :(得分:0)
这是来自数据库的不受信任的数据,但是应该这样做:
eval("\$array = array($string);");
print_r($array);
你也可以尝试这个,但就像其他答案一样,它不适用于所有数据(如果它包含数据中的>,):
$string = str_replace(array(',','"','>'), array('&','',''), $string);
parse_str($string, $array);
print_r($array);