note 112412 deleted from function.json-decode by googleguy
| From: | googleguy@php.net | Date: | Fri, 14 Jun 2013 10:01:57 +0000 |
| Subject: | note 112412 deleted from function.json-decode by googleguy | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-195207@lists.php.net to get a copy of this message | ||
Note Submitter: Matt Browne
----
Thanks "1franck" for the json_clean_decode function to strip comments from the JSON!
I only had one issue with it which was if there was a // comment at the very beginning of the JSON
string (with no space before it).
Here's my modified version that accounts for this (my only change was at the end of the regex):
<?php
/** Clean comments of json content and decode it with json_decode().
* Work like the original php json_decode() function with the same params
*
* @param string $json The json string being decoded
* @param bool $assoc When TRUE, returned objects will be converted into associative arrays.
* @param integer $depth User specified recursion depth. (>=5.3)
* @param integer $options Bitmask of JSON decode options. (>=5.4)
* @return string
*/
function json_clean_decode($json, $assoc = false, $depth = 512, $options = 0) {
// search and remove comments like /* */ and //
$json =
preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t]//.*)|(^//.*)#",
'', $json);
if(version_compare(phpversion(), '5.4.0', '>=')) {
$json = json_decode($json, $assoc, $depth, $options);
}
elseif(version_compare(phpversion(), '5.3.0', '>=')) {
$json = json_decode($json, $assoc, $depth);
}
else {
$json = json_decode($json, $assoc);
}
return $json;
}
?>