<?PHP
////////////////////////////////////////////////////////
// Function: dump
// Inspired from: PHP.net Contributions
// Description: Helps with php debugging
function dump(&$var, $info = FALSE, $title = FALSE)
{
$scope = false;
$prefix = 'unique';
$suffix = 'value';
if($scope) $vals = $scope;
else $vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach($vals as $key => $val) if($val === $new) $vname = $key;
$var = $old;
echo "<pre style='margin: 0px 0px 10px 0px; display: block; background: white; color: black; font-family: Verdana; border: 1px solid #cccccc; padding: 5px; font-size: 10px; line-height: 13px;'>";
if ($title != FALSE)
{
echo "<div style='background:#a2a2a2; align:center;'>".$title."</div>";
}
if($info != FALSE) echo "<b style='color: red;'>$info:</b><br>";
do_dump($var, '$'.$vname);
}
////////////////////////////////////////////////////////
// Function: do_dump
// Inspired from: PHP.net Contributions
// Description: Better GI than print_r or var_dump
function do_dump(&$var, $var_name = NULL, $indent = NULL, $reference = NULL)
{
$do_dump_indent = "<span style='color:#eeeeee;'>|</span> ";
$reference = $reference.$var_name;
$keyvar = 'the_do_dump_recursion_protection_scheme'; $keyname = 'referenced_object_name';
{
$real_var = &$var[$keyvar];
$real_name = &$var[$keyname];
echo "$indent$var_name <span style='color:#a2a2a2'>$type</span> = <span style='color:#e87800;'>&$real_name</span><br>";
}
else
{
$var = array($keyvar => $var, $keyname => $reference);
$avar = &$var[$keyvar];
if($type == "String") $type_color = "<span style='color:green'>";
elseif($type == "Integer") $type_color = "<span style='color:red'>";
elseif($type == "Double"){ $type_color = "<span style='color:#0099c5'>"; $type = "Float"; }
elseif($type == "Boolean") $type_color = "<span style='color:#92008d'>";
elseif($type == "NULL") $type_color = "<span style='color:black'>";
{
$GLOBALS['block_num'] = $GLOBALS['block_num'] + 1;
$array_num = $GLOBALS['block_num'];
echo "$indent" . ($var_name ?
"<a name=\"block_pos".$array_num."\" href=\"#block_pos".$array_num."\" OnClick=\"ToggleBlock(".$array_num.")\">$var_name</a> => ":"") . "<span style='color:#a2a2a2'>$type ($count)</span><br>$indent(<span id=\"block".$array_num."\"><br>";
foreach($keys as $name)
{
$value = &$avar[$name];
do_dump($value, "['$name']", $indent.$do_dump_indent, $reference);
}
echo "$indent</span>)<br>";
}
{
$GLOBALS['block_num'] = $GLOBALS['block_num'] + 1;
$obj_num = $GLOBALS['block_num'];
echo "$indent<a name=\"block_pos".$obj_num."\" href=\"#block_pos".$obj_num."\" OnClick=\"ToggleBlock(".$obj_num.")\">$var_name</a> <span style='color:#a2a2a2'>$type</span><br>$indent(<span id=\"block".$obj_num."\"><br>";
foreach($avar as $name=>$value) do_dump($value, "$name", $indent.$do_dump_indent, $reference);
echo "$indent</span>)<br>";
}
elseif(is_int($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";
elseif(is_string($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color\"$avar\"</span><br>";
elseif(is_float($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";
elseif(is_bool($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color".($avar == 1 ?
"TRUE":"FALSE")."</span><br>";
elseif(is_null($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> {$type_color}NULL</span><br>";
else echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar)."</span>)</span> $avar<br>";
$var = $var[$keyvar];
}
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JSON Viewer</title>
<script language="JavaScript">
function ToggleBlock(id)
{
if (document.getElementById("block"+id).style.display == "none")
{
document.getElementById("block"+id).style.display = "";
}
else
{
document.getElementById("block"+id).style.display = "none";
}
}
</script>
</head>
<body>
<p><form method="post" action="
<?PHP echo $_SERVER['PHP_SELF'];?
>">
JSON to decode<br />
<textarea name="taJSONString" cols="80" rows="25">
<?PHP echo $json_str;
?></textarea><br />
<input type="submit" name="btnSubmit" value="Decode" />
</form></p>
<p>
<?PHP
if (isset($_POST['btnSubmit']) == true) {
$json = json_decode($json_str);
dump($json);
}
?>
</p>
</body>
</html>