function parseObject($obj, $values=true){ $obj_dump = print_r($obj, 1); $ret_list = array(); $ret_map = array(); $ret_name = ''; $dump_lines = preg_split('/[\r\n]+/',$obj_dump); $ARR_NAME = 'arr_name'; $ARR_LIST = 'arr_list'; $arr_index = -1; // get the object type... $matches = array(); preg_match('/^\s*(\S+)\s+\bObject\b/i',$obj_dump,$matches); if(isset($matches[1])){ $ret_name = $matches[1]; }//if foreach($dump_lines as &$line){ $matches = array(); //load up var and values... if(preg_match('/^\s*\[\s*(\S+)\s*\]\s+=>\s+(.*)$/', $line, $matches)){ if(mb_stripos($matches[2],'array') !== false){ $arr_map = array(); $arr_map[$ARR_NAME] = $matches[1]; $arr_map[$ARR_LIST] = array(); $arr_list[++$arr_index] = $arr_map; }else{ // save normal variables and arrays differently... if($arr_index >= 0){ $arr_list[$arr_index][$ARR_LIST][$matches[1]] = $matches[2]; }else{ $ret_list[$matches[1]] = $matches[2]; }//if/else }//if/else }else{ // save the current array to the return list... if(mb_stripos($line,')') !== false){ if($arr_index >= 0){ $arr_map = array_pop($arr_list); // if there is more than one array then this array belongs to the earlier array... if($arr_index > 0){ $arr_list[($arr_index-1)][$ARR_LIST][$arr_map[$ARR_NAME]] = $arr_map[$ARR_LIST]; }else{ $ret_list[$arr_map[$ARR_NAME]] = $arr_map[$ARR_LIST]; }//if/else $arr_index--; }//if }//if }//if/else }//foreach $ret_map['name'] = $ret_name; $ret_map['variables'] = $ret_list; return $ret_map; }//method