是否可以写入字符串或日志到控制台?
我的意思是
就像在JSP中一样,如果我们打印system.out.println("some")这样的东西,它将出现在控制台,而不是页面上。
是否可以写入字符串或日志到控制台?
我的意思是
就像在JSP中一样,如果我们打印system.out.println("some")这样的东西,它将出现在控制台,而不是页面上。
当前回答
如果你正在寻找一个简单的方法,echo as JSON:
<script>
console.log(<?= json_encode($foo); ?>);
</script>
其他回答
干净、快速、简单,没有无用的代码:
function consolelog($data) {
echo "<script>console.log('".$data."');</script>";
}
还有一个伟大的谷歌Chrome扩展,PHP控制台,有一个PHP库,可以让你:
在Chrome JavaScript控制台和弹出的通知中看到错误和异常。 转储任何类型的变量。 远程执行PHP代码。 使用密码保护访问。 根据请求对控制台日志进行分组。 跳转到文本编辑器中的错误文件:行。 将错误/调试数据复制到剪贴板(用于测试人员)。
我认为最好的解决办法是使用 error_log(内容) 这是输出
2022年编辑:
所以我发现了更好的方法,那就是file_put_contents("php://stdout",内容)
它在没有日志信息的情况下进行写入
我发现这很有帮助:
function console($data, $priority, $debug)
{
if ($priority <= $debug)
{
$output = '<script>console.log("' . str_repeat(" ", $priority-1) . (is_array($data) ? implode(",", $data) : $data) . '");</script>';
echo $output;
}
}
像这样使用它:
<?php
$debug = 5; // All lower and equal priority logs will be displayed
console('Important', 1 , $debug);
console('Less Important', 2 , $debug);
console('Even Less Important', 5 , $debug);
console('Again Important', 1 , $debug);
?>
在控制台输出:
重要的 不那么重要 更不重要 同样重要的
您可以通过使用$debug值限制不太重要的日志来关闭它们。
这里有一个方便的函数。它使用起来超级简单,允许您传递任意类型的任意数量的参数,并将在浏览器控制台窗口中显示对象内容,就像从JavaScript调用console.log一样——但是从PHP调用的
注意,你也可以通过传递' tag - yourtag '来使用标签,它将被应用,直到读取另一个标签,例如' tag - yournexttag '
/*
* Brief: Print to console.log() from PHP
*
* Description: Print as many strings,arrays, objects, and
* other data types to console.log from PHP.
*
* To use, just call consoleLog($data1, $data2, ... $dataN)
* and each dataI will be sent to console.log - note
* that you can pass as many data as you want an
* this will still work.
*
* This is very powerful as it shows the entire
* contents of objects and arrays that can be
* read inside of the browser console log.
*
* A tag can be set by passing a string that has the
* prefix TAG- as one of the arguments. Everytime a
* string with the TAG- prefix is detected, the tag
* is updated. This allows you to pass a tag that is
* applied to all data until it reaches another tag,
* which can then be applied to all data after it.
*
* Example:
*
* consoleLog('TAG-FirstTag', $data, $data2, 'TAG-SecTag, $data3);
*
* Result:
* FirstTag '...data...'
* FirstTag '...data2...'
* SecTag '...data3...'
*/
function consoleLog(){
if(func_num_args() == 0){
return;
}
$tag = '';
for ($i = 0; $i < func_num_args(); $i++) {
$arg = func_get_arg($i);
if(!empty($arg)){
if(is_string($arg) && strtolower(substr($arg, 0, 4)) === 'tag-'){
$tag = substr($arg, 4);
}else{
$arg = json_encode($arg, JSON_HEX_TAG | JSON_HEX_AMP );
echo "<script>console.log('" . $tag . " " . $arg . "');</script>";
}
}
}
}
注意:func_num_args()和func_num_args()是PHP函数,用于读取动态数量的输入参数,并允许该函数从一个函数调用中有无限多个console.log请求。