加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

你如何格式化PHP错误消息?他们不尊重CSS

发布时间:2020-12-13 22:20:35 所属栏目:PHP教程 来源:网络整理
导读:每当 PHP输出错误消息时,它会忽略css和设计精美的页面,方法是输出页面顶部的消息,删除任何阻碍它的方式. 例如 some code} else {echo "error,please do something!"; 我如何得到(或很好地问)在我的CSS中已经存在的div中输出文本,以便它遵守该div附带的格式和
每当 PHP输出错误消息时,它会忽略css和设计精美的页面,方法是输出页面顶部的消息,删除任何阻碍它的方式.

例如

some code} else {
echo "error,please do something!";

我如何得到(或很好地问)在我的CSS中已经存在的div中输出文本,以便它遵守该div附带的格式和对齐规则.

解决方法

编辑

实际上,我刚刚意识到你所说的“错误”涉及回声/打印输出.这是问题所在.

您将字符串错误DIRECTLY打印(回显)到输出缓冲区(当您运行完所有代码时将HTML发送到浏览器). echo()和print()直接发送你正在回显/打印的内容,除非它在output_buffer块中(我不会把你的细节混淆).

因此,您正在管理常规的html /文本输出,以便不将页面内容打印到输出缓冲区,但在这种情况下,您使用的是echo,它将字符串数据直接发送到缓冲区AT THAT时刻.

例如:

你的问题在一个简单的例子中

<?php

$mystr = "<html>";
$mystr .= "<body><h1>Hello World</h1></body></html>";

echo "<head></head>";

echo $mystr;

?>

哪个会给我输出到浏览器:

<head></head><html><body><h1>Hello World</h1></body></html>

我存储字符串数据,但在回显其他html数据之前回显HEAD块.

我需要做的是:

<?php

$mystr = "<html>";
$mystr .= "<head></head>";
$mystr .= "<body><h1>Hello World</h1></body></html>";

echo $mystr;

?>

哪个会给我输出到浏览器:

<html><head></head><body><h1>Hello World</h1></body></html>

我存储字符串输出(在这种情况下你的错误),直到我需要稍后输出.这是您需要知道的,并在您的代码中完成.

我会研究error_reporting(0)/ display_errors,error_get_last和set_error_handler.

http://www.php.net/manual/en/function.error-reporting.php

http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

http://php.net/manual/en/function.error-get-last.php

http://www.php.net/manual/en/function.set-error-handler.php

这样你就可以立即停止将所有错误发送到输出缓冲区(这就是它位于页面顶部的原因),然后捕获,存储和显示错误.

error_reporting(0);

set_error_handler('phpLogError');

function phpLogError() {
    $error = error_get_last();

    if ($error['type'] == 1) {
        //do your stuff    
    } 
}

function phpGetLoggedErrors() {
    // return your prettified html errors
}

或者,换句话说……

php_error_handle.php

<?php

$GLOBAL['_logged_php_errors'] = array();

error_reporting(0);

set_error_handler('phpLogError');

function phpLogError() {
    global $_logged_php_errors;

    $error = error_get_last();

    if ($error['type'] == 1) {
        $_logged_php_errors[] = "<span>$error</span>";
    } 
}

function phpGetLoggedErrors() {
    global $_logged_php_errors;

    return "<ol><li>".implode('</li><li>',$_logged_php_errors)."</li></ol>";
}

?>

other.php

<?php

require_once 'php_error_handle.php';

// other stuff,pages included/required,etc...

只需确保在第一行代码中发生require_once.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读