'; $data = token_get_all($data); $stack = array( array() ); $element = NULL; foreach($data as $token) { if(is_array($token)) { // Ignore < ? php and ? > added above if($token[0] == T_OPEN_TAG OR $token[0] == T_CLOSE_TAG) continue; // String/int element within an array if($token[0] == T_CONSTANT_ENCAPSED_STRING) { $element = substr($token[1], 1, -1); } if($token[0] == T_LNUMBER) { $element = $token[1]; } } // Nested array elseif($token == '[') { array_push($stack, array()); } // End of nested array elseif($token == ']') { // Put elements into the latest array if($element !== NULL && $element !== FALSE) { end($stack); $stack[key($stack)][] = $element; $element = NULL; } // Check - maybe there are no elements between ] and next ] $element = FALSE; $temp = array_pop($stack); end($stack); $stack[key($stack)][] = $temp; unset($temp); } // Elements separator elseif($token == ',') { // Put elements into the latest array (]] check) if($element !== FALSE) { end($stack); $stack[key($stack)][] = $element; } $element = NULL; } else { return FALSE; } } if(isset($stack[0][0])) { return $stack[0][0]; } else { return NULL; } } } ?>