A project of mine queried another service that returned the data to me as a "Google Visualization" data. This is a data table, and while native to many languages, PHP isn't one of them.
function parseGV($gv) { // Return array $data = array(); // Buh-Bye extra BS. $gv = preg_replace('/google.visualization.Query.setResponse\(/', '', $gv); $gv = preg_replace('/\)\;/', '', $gv); // Get table Headings preg_match('/"cols":\[{(.*)}\],"rows"/', $gv, $tables); $columns = array(); $cols = explode('},{', $tables[1]); foreach ($cols as $col) { $items = explode(",", $col); foreach ($items as $item) { $item = preg_replace('/\"/', '', $item); $arr = explode(':', $item); if ($arr[0] == 'id') { array_push($columns, $arr[1]); } } } // Get the rows preg_match('/"rows":\[{"c":(.*)\]/', $gv, $r); if (count($r)) { preg_match_all('/\[{(.*?)}\]}/', $r[1], $rows); for ($i = 0; $i < count($rows[1]); $i++) { $pairs = explode('},{', $rows[1][$i]); for ($p = 0; $p < count($pairs); $p++) { $pair = preg_replace('/\"/', '', $pairs[$p]); $s = preg_replace('/v:/', '', $pair); $data[$i][$columns[$p]] = $s; } } } return $data; }
You use it like so:
$companies = parseGV(file_get_contents("https://rvacore-test.appspot.com/d/company/".$my_co_id."/companies?auth=".$auth_token, false, $context));
And you get back an array like:
( [0] => Array ( [id] => 77db8797-7c01-4b87-84a9-XXXXXXXXXXX [name] => My Sub-Company [street] => 1313 Mockingbird Ln. [unit] => [city] => Chester [province] => VA [country] => [postalCode] => 23836 [address] => 1313 Mockingbird Ln., Chester, VA, 23836 [timeZone] => (GMT 00:00) Dublin, Edinburgh, Lisbon, London [telephone] => [fax] => [parentId] => 7ba8917f-b1d2-42f1-96fe-XXXXXXXXXXXXXXX [networkOperatorStatus] => 0.0 [networkOperatorStatusChangeDate] => new Date(2014,1,7,20,52,55) [companyStatus] => 1.0 [companyStatusChangeDate] => new Date(2014,1,7,20,52,55) [notificationEmails] => [changeDate] => new Date(2014,1,7,20,52,57) [changedBy] => System ) [1] => Array ( [id] => 11a9e443-a1b9-45b8-bee2-XXXXXXXXXXXX [name] => Another Sub-Company ... ) [2] => Array ( ... ) [3] => Array ( ... ) )
Didn't see this elsewhere on the web, so here it is.