<?php
function
vdump() {
$args
= func_get_args();
$backtrace
= debug_backtrace();
$code
= file(
$backtrace
[0][
'file'
]);
$ret
=
"<pre style='background: #eee; border: 1px solid #aaa; clear: both; overflow: auto; padding: 10px; text-align: left; margin-bottom: 5px'>"
;
$ret
.=
"<b>"
.htmlspecialchars(trim(
$code
[
$backtrace
[0][
'line'
]-1])).
"</b>\n"
;
$ret
.=
"\n"
;
ob_start();
foreach
(
$args
as
$arg
)
var_dump(
$arg
);
var_dump(
$_SERVER
);
var_dump(
$_COOKIE
);
$str
= ob_get_contents();
ob_end_clean();
$str
= preg_replace(
'/=>(\s+)/'
,
' => '
,
$str
);
$str
= preg_replace(
'/ => NULL/'
,
' → <b style="color: #000">NULL</b>'
,
$str
);
$str
= preg_replace(
'/}\n(\s+)\[/'
,
"}\n\n"
.
'$1['
,
$str
);
$str
= preg_replace(
'/ (float|int)\((\-?[\d\.]+)\)/'
,
" <span style='color: #888'>$1</span> <b style='color: brown'>$2</b>"
,
$str
);
$str
= preg_replace(
'/array\((\d+)\) {\s+}\n/'
,
"<span style='color: #888'>array•$1</span> <b style='color: brown'>[]</b>"
,
$str
);
$str
= preg_replace(
'/ string\((\d+)\) \"(.*)\"/'
, " <span style=
'color: #888'
>str•
$1
</span> <b style=
'color: brown'
>
'$2'
</b>",
$str
);
$str
= preg_replace(
'/\[\"(.+)\"\] => /'
, "<span style=
'color: purple'
>
'$1'
</span> → ",
$str
);
$str
= preg_replace(
'/object\((\S+)\)#(\d+) \((\d+)\) {/'
,
"<span style='color: #888'>obj•$2</span> <b style='color: #0C9136'>$1[$3]</b> {"
,
$str
);
$str
=
str_replace
(
"bool(false)"
,
"<span style='color:#888'>bool•</span><span style='color: red'>false</span>"
,
$str
);
$str
=
str_replace
(
"bool(true)"
,
"<span style='color:#888'>bool•</span><span style='color: green'>true</span>"
,
$str
);
$ret
.=
$str
;
$ret
.=
"</pre>"
;
return
$ret
;
}
function
debug_string_backtrace() {
ob_start();
debug_print_backtrace();
$trace
= ob_get_contents();
ob_end_clean();
$trace
= preg_replace (
'/^#0\s+'
.
__FUNCTION__
.
"[^\n]*\n/"
,
''
,
$trace
, 1);
$trace
= preg_replace (
'/^#(\d+)/me'
,
'\'#\' . ($1 - 1)'
,
$trace
);
$trace
= wordwrap(
$trace
, 123,
"<br>"
);
return
$trace
;
}