Mar*_*ark 16
您可以通过在脚本标记中放置console.log()来将JavaScript转储到控制台:
<script type="text/javascript">
console.log("hello");
</script>
Run Code Online (Sandbox Code Playgroud)
所以,如果你在那里做一个PHP转储...
<script type="text/javascript">
console.log("<?php var_dump('abc'); ?>");
</script>
Run Code Online (Sandbox Code Playgroud)
你只需要小心var_dump中的'和'来打破你的JavaScript.在这个例子中它会没问题,因为HTML会是:
<script type="text/javascript">
console.log("string 'abc' (length=3)");
</script>
Run Code Online (Sandbox Code Playgroud)
只记得处理完PHP然后放入JavaScript.您也可以将其转储到评论中:
<!--
<?php
var_dump('abc');
?>
-->
Run Code Online (Sandbox Code Playgroud)
然后你可以查看source或inspect元素.
Wal*_*oss 16
也许你需要的是这样的:
function var2console($var, $name='', $now=false)
{
if ($var === null) $type = 'NULL';
else if (is_bool ($var)) $type = 'BOOL';
else if (is_string ($var)) $type = 'STRING['.strlen($var).']';
else if (is_int ($var)) $type = 'INT';
else if (is_float ($var)) $type = 'FLOAT';
else if (is_array ($var)) $type = 'ARRAY['.count($var).']';
else if (is_object ($var)) $type = 'OBJECT';
else if (is_resource($var)) $type = 'RESOURCE';
else $type = '???';
if (strlen($name)) {
str2console("$type $name = ".var_export($var, true).';', $now);
} else {
str2console("$type = " .var_export($var, true).';', $now);
}
}
function str2console($str, $now=false)
{
if ($now) {
echo "<script type='text/javascript'>\n";
echo "//<![CDATA[\n";
echo "console.log(", json_encode($str), ");\n";
echo "//]]>\n";
echo "</script>";
} else {
register_shutdown_function('str2console', $str, true);
}
}
Run Code Online (Sandbox Code Playgroud)
用法:var2console($myvar, '$myvar');或简单var2console($myvar);
很少需要将$now参数设置为true,从而导致<script>标记的立即输出.使用的好处register_shutdown_function()是你不需要注意HTML中的"你在哪里".
在json_encode()蜜饯从PHP转移到JavaScript的所有字符.唯一需要注意的是编码:json_encode()只能使用UTF-8(在大多数情况下,无论如何都是推荐的编码).您可能需要类似的东西utf8_encode()或者mb_convert_encoding()如果您使用不同的编码(或者更确切地说,您可能会考虑切换到UTF-8).
Firebug控制台的输出只是var_export()变量类型的输出,前面是变量的类型,包括字符串的长度和数组的数量,以及可选的变量名称.
var_export()提供比...更可读的输出var_dump().如果你真的需要输出var_dump(),你可以使用这样的东西:
function dump2console($var, $name='', $now=false)
{
ob_start();
if (strlen($name)) {
echo "$name =\n";
}
var_dump($var);
$str = ob_get_clean();
str2console($str, $now);
}
Run Code Online (Sandbox Code Playgroud)
用法:dump2console($myvar, '$myvar');或简单dump2console($myvar);
你应该避免使用循环引用(var_dump()检测它们的步骤太晚了,var_export()根本不检测它们).这是如何做到的,例如$GLOBALS:
function globals2console($now=false)
{
$g = $GLOBALS;
$g['GLOBALS'] = '(recursion)';
var2console($g, '$GLOBALS', $now);
}
Run Code Online (Sandbox Code Playgroud)
<script>console.log( <?= json_encode( $var ) ?> )</script>
Run Code Online (Sandbox Code Playgroud)
把帽子扔进戒指.听起来像FirePHP是最好的方式.