Skip to content

Instantly share code, notes, and snippets.

@handlename
Created September 21, 2010 10:47
Show Gist options
  • Save handlename/589525 to your computer and use it in GitHub Desktop.
Save handlename/589525 to your computer and use it in GitHub Desktop.
<?php
// http://www.php.net/manual/ja/function.json-encode.php#80339
// by PHP Documentation Group
function json_format($json)
{
$tab = " ";
$new_json = "";
$indent_level = 0;
$in_string = false;
$json_obj = json_decode($json);
if(!$json_obj)
return false;
$json = json_encode($json_obj);
$len = strlen($json);
for($c = 0; $c < $len; $c++)
{
$char = $json[$c];
switch($char)
{
case '{':
case '[':
if(!$in_string)
{
$new_json .= $char . "\n" . str_repeat($tab, $indent_level+1);
$indent_level++;
}
else
{
$new_json .= $char;
}
break;
case '}':
case ']':
if(!$in_string)
{
$indent_level--;
$new_json .= "\n" . str_repeat($tab, $indent_level) . $char;
}
else
{
$new_json .= $char;
}
break;
case ',':
if(!$in_string)
{
$new_json .= ",\n" . str_repeat($tab, $indent_level);
}
else
{
$new_json .= $char;
}
break;
case ':':
if(!$in_string)
{
$new_json .= ": ";
}
else
{
$new_json .= $char;
}
break;
case '"':
$in_string = !$in_string;
default:
$new_json .= $char;
break;
}
}
return $new_json;
}
// Unicodeエスケープされた文字列をUTF-8文字列に戻す
function unicode_encode($str)
{
return preg_replace_callback("/\\\\u([0-9a-zA-Z]{4})/", "encode_callback", $str);
}
function encode_callback($matches)
{
$char = mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UTF-16");
return $char;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment