public static function convert($json, $return = 'document') { self::$dom = new DOMDocument('1.0', 'utf-8'); self::$dom->formatOutput = TRUE; // remove callback functions from JSONP if (preg_match('/(\\{|\\[).*(\\}|\\])/s', $json, $matches)) { $json = $matches[0]; } else { throw new Exception('JSON not formatted correctly'); } $data = json_decode($json); $data_element = self::_process($data, self::$dom->createElement('data')); self::$dom->appendChild($data_element); switch ($return) { case 'fragment': return self::$dom->saveXML($data_element); case 'object': return self::$dom; default: return self::$dom->saveXML(); } }