Php 打印和变量转储

Php 打印和变量转储,php,Php,我注意到,每次我打印某个数组时,我都无法正确获取显示样式,我的意思是它只显示在浏览器客户端视图的一行中。您是否有任何工具、方法或方法可以帮助以可读的格式更好地显示它?试试看 echo'<pre>'; print_r(); echo'</pre>'; header("Content-Type: text/plain"); print_r(); echo'; print_r(); 回声'; 它将为您提供格式良好的输出我想创建一个名为pr的包装函数,在print\r的输出

我注意到,每次我打印某个数组时,我都无法正确获取显示样式,我的意思是它只显示在浏览器客户端视图的一行中。您是否有任何工具、方法或方法可以帮助以可读的格式更好地显示它?

试试看

echo'<pre>';
print_r();
echo'</pre>';
header("Content-Type: text/plain");
print_r();
echo';
print_r();
回声';

它将为您提供格式良好的输出

我想创建一个名为pr的包装函数,在print\r的输出前后插入一个pre标记

i、 e

函数pr($variable){
回声';
打印(变量);
回声';
}

这是因为浏览器在呈现文本时会将空白去除为单个空格,但您不需要像其他建议的那样使用三行:

.tag { color: #aaaaaa; }
.assoc { color: teal; }

.prettyprint {
padding: 8px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
.prettyprint.linenums {
-webkit-box-shadow: inset 60px 0 0 #fbfbfc, inset 61px 0 0 #ececf0;
-moz-box-shadow: inset 60px 0 0 #fbfbfc, inset 61px 0 0 #ececf0;
box-shadow: inset 60px 0 0 #fbfbfc, inset 61px 0 0 #ececf0;
}

ol.linenums {
margin: 0 0 0 53px;
color: #aaaaaa;
}

ol.linenums li > span {
padding-left: 12px;
color: #666666;
text-shadow: 1px 1px 1px white;
line-height: 20px;
text-shadow: 0 1px 0 #fff;
}
echo'',打印($var,true),'';

要以管理良好的方式输出数组,html标记
非常有用


我使用:


这个问题也让我很沮丧,每次调试我都会写3行代码

echo';
打印(数组);
回声';
最后,我刚刚编写了一个函数(print_a),可以为我实现这一点。这一功能多年来一直在扩展,我向您介绍类固醇的打印功能

如果我有任何更新,或者你有什么要补充的,我会在这里发布-

/**
*像print_r()但是好多了!使用Google Prittify时从数组中删除HTML格式。
*
*@作者迈克·加德
*
*@param array$您要查看的数组。
*@param boolean$die这是否应该在完成时终止进程?
*@param boolean$return您希望回显还是返回此内容
*
*@return string$string数组的视图,但其格式为便于通过HTML阅读。
*/
函数print_a($array=false,$die=true,$return=false){
如果(!$return)
$return=0;
if(!$array&&!$return)
$array=$GLOBALS;
如果(!$return){
$in='';
$dent='';
}埃尔塞夫(返回){
$in=stru重复(“”,($return*4));
$dent=str_重复(“”,($return*4)+4);
}
$indent=$in.$dent;
未结算($);
$result=($return)?“”:$in;
$result.=((is_array($array))?'array':'stdClass Object')。“(\n”;
foreach($key=>$value的数组){
$result.=$indent.['.$key.]=>';
if(is_数组($value)| is_对象($value))
$result.=print_a($value,false,$return+1);
elseif(strlen($value)==0)
$result.='null';
elseif(预匹配(“/^[0-9]+$/”,$value))
$result.=$value;
elseif(preg_match(“/[0-9]{4}-[0-9]{2}-[0-9]{2}[0-9]{2}:[0-9]{2}:[0-9]{2}/”,$value))
$result.=''.$value';
否则{
$value=addcslashes(htmlspecialchars($value),“\”;
如果(strlen($value)>240){
$value=str_replace(数组(“\n”,“\r”)、数组(“
,”)、$value); $result.='\'.rtrim(substr($value,0,80),'\x92')。'\''.$value'.'''.''.'''; }否则{ $result.='\'.$value'\''; } } $result.=“\n”; } $result.=$in.'); $result=str_replace(数组(“”,“\t”),“”,$result); 如果(!$return){ $string=''。 ''. ''. ''. ''. '预{背景色:#fff;字体系列:\'Ubuntu Mono\',无衬线;}'。 'li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{列表样式类型:decimal;}'。 'ol{padding:0 45px;}'。 '详细信息,详细信息摘要{显示:内联块;}'。 '详细信息[打开]摘要span{显示:无;}'。 ''. “.$result.”。 “prettyPrint();”; echo$字符串; 如果($die)die(); }否则{ 返回$result; } } /** *由preg_replace_回调调用 * *@param数组$matches */ 函数addslashes\u 2\u regex($matches){ 返回“=>\”.addslashes($matches[1])。“\n”; } /** *返回易于读取的时间差。 * *@作者迈克·加德 * *@param string$开始时间或以前计算的差异 *@param string$结束时间,如果使用以前计算的差异,则保留为空 * *@返回字符串干净且可读的时间差 * * *@example echo clean_time_diff(标准时间('-8小时-31分钟)); *@example echo clean_time_diff('2013-05-03 10:15:41'); *@example echo clean_time_diff('2015-01-01 00:00:00','2013-05-03 10:15:41'); */ 函数clean\u time\u diff($start,$end=false){ 如果(!is_int($start))$start=strottime($start); 如果(!is_int($end))$end=strottime($end); $diff=($end==false)?time():$end)-$start; $tense=($diff>0)?“ago”:“in future”; $diff=绝对值($diff); $return=''; //现在 如果($diff==0) 返回“现在”; //秒 如果($diff<60){ $return=$diff.“second.”(($diff==1)?“s”); //会议记录 }elseif($diff<3600){ $minutes=round($diff/60); $return=$minutes.'minutes'($minutes==1)?''s'); //<4小时 }elseif($diff<14400){ $hours=楼层($diff/3600); $minutes=round(($diff/3600)-$hours)*60); $append=($minutes>0)?,“.$minutes.”分钟。“($hours==1)?“”:“s”):“”; $return=$hours.'hour'($hours==1)?''s')。$append; //小时数 }elseif($diff<86400){ $hours=round($diff/3600); $return=$hours.'hours'; //<4天 }elseif($diff<345600){ $days=最低限额($diff/86400); $hours=round(($diff/86400)-$days)*24); $append=($hours>0)?,“.$hours.'hours.”($hours==1)?“”:“s”):“”; $return=$days.'day'($days==1)?''s')。$append; //日子 }elseif(差异<2592000美元){ $days=整数($diff/86400); $return=$days.'day'($days==1
function pr($variable) {
    echo '<pre>';
    print_r($variable);
    echo '</pre>';
}
echo '<pre>', print_r($var, true), '<pre>';
<pre>
<?php print_r() ?>
</pre>
function view($object) {
   $object = print_r($object, true);
   $lines = explode("\n", $object);

   echo '<pre class="prettyprint linenums"><ol class="linenums">';
       foreach ($lines as $line ) {
           $output = preg_replace('"\[([^;]*)\]"', '<span class="assoc">$0</span>', $line);
           $output = preg_replace('"\=\>"', '<span class="tag">$0</span>', $output);
           echo "<li><span>$output</span></li>";
       }
   echo'</ul></pre>';
}
.tag { color: #aaaaaa; }
.assoc { color: teal; }

.prettyprint {
padding: 8px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
.prettyprint.linenums {
-webkit-box-shadow: inset 60px 0 0 #fbfbfc, inset 61px 0 0 #ececf0;
-moz-box-shadow: inset 60px 0 0 #fbfbfc, inset 61px 0 0 #ececf0;
box-shadow: inset 60px 0 0 #fbfbfc, inset 61px 0 0 #ececf0;
}

ol.linenums {
margin: 0 0 0 53px;
color: #aaaaaa;
}

ol.linenums li > span {
padding-left: 12px;
color: #666666;
text-shadow: 1px 1px 1px white;
line-height: 20px;
text-shadow: 0 1px 0 #fff;
}
echo '<pre>';
print_r($array);
echo '</pre>';
/**
 * Like print_r() but so much better! Removes HTML formatting from an array while using Google Prittify.
 *
 * @author  Mike Garde
 *
 * @param array    $array   Array you want to see.
 * @param boolean  $die     Should this kill the process when done?
 * @param boolean  $return  Do you want this echoed or returned
 *
 * @return string  $string  A view of an array but formatted for easy reading via HTML.
 */
function print_a($array=false, $die=true, $return=false) {

    if(!$return)
        $return = 0;

    if(!$array && !$return)
        $array = $GLOBALS;

    if(!$return) {
        $in = '';
        $dent = '    ';
    } elseif($return) {
        $in = str_repeat(' ', ($return*4));
        $dent = str_repeat(' ', ($return*4)+4);
    }
    $indent = $in.$dent;
    unset($dent);

    $result = ($return) ? ' ' : $in;
    $result.= ((is_array($array)) ? 'Array' : 'stdClass Object')." (\n";
    foreach($array as $key => $value) {

        $result.= $indent.'['. $key .'] => ';

        if(is_array($value) || is_object($value))
            $result.= print_a($value, false, $return+1);
        elseif(strlen($value) == 0)
            $result.= 'null';
        elseif(preg_match("/^[0-9]+$/", $value))
            $result.= $value;
        elseif(preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/", $value))
            $result.= '<span title="'.date("D, M j, Y, g:i a", strtotime($value)).' | '.clean_time_diff($value).'">'.$value.'</span>';
        else {
            $value = addcslashes(htmlspecialchars($value), '\'');

            if(strlen($value) > 240) {
                $value = str_replace(array("\n", "\r"), array('<br />', ''), $value);
                $result.= '<details><summary>\''.rtrim(substr($value, 0, 80), '\x92').'\'</summary>\''.$value.'\'</details>';
            } else {
                $result.= '\''.$value.'\'';
            }
        }
        $result.= "\n";
    }
    $result.= $in.')';
    $result = str_replace(array('    ', "\t"), '&nbsp;&nbsp;&nbsp;&nbsp;', $result);

    if(!$return) {
        $string = '<script src="//google-code-prettify.googlecode.com/svn/trunk/src/prettify.js"></script>'.
                  '<script src="//google-code-prettify.googlecode.com/svn/trunk/src/lang-css.js"></script>'.
                  '<link rel="stylesheet" type="text/css" href="//google-code-prettify.googlecode.com/svn/trunk/src/prettify.css">'.
                  '<link href="//fonts.googleapis.com/css?family=Ubuntu+Mono" rel="stylesheet" type="text/css">'.
                  '<style>'.
                  'pre { background-color: #fff; font-family: \'Ubuntu Mono\', sans-serif; }'.
                  'li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 { list-style-type: decimal; }'.
                  'ol { padding: 0 0 0 45px; }'.
                  'details, details summary { display: inline-block; }'.
                  'details[open] summary span { display: none; }'.
                  '</style>'.
                  '<pre class="prettyprint linenums">'. $result .'</pre>'.
                  '<script>prettyPrint();</script>';
        echo $string;

        if ($die) die();

    } else {
        return $result;
    }

}


/**
 * Called by preg_replace_callback
 *
 * @param array  $matches
 */
function addslashes_2_regex($matches){
    return ' => \''.addslashes($matches[1])."'\n";
}


/**
 * Returns an easly readable time difference.
 *
 * @author  Mike Garde
 *
 * @param string  $start  Start time OR previously calculated difference
 * @param string  $end    End time OR leave blank if using previously calculated difference
 *
 * @return string Clean and readable difference in time
 *
 *
 * @example echo clean_time_diff(strtotime('-8 hours -31 minutes'));
 * @example echo clean_time_diff('2013-05-03 10:15:41');
 * @example echo clean_time_diff('2015-01-01 00:00:00', '2013-05-03 10:15:41');
 */
function clean_time_diff($start, $end=false){

    if(!is_int($start)) $start = strtotime($start);
    if(!is_int($end)) $end = strtotime($end);

    $diff   = (($end == false) ? time() : $end) - $start;
    $tense  = ($diff > 0) ? 'ago' : 'in the future';
    $diff   = abs($diff);
    $return = '';

    // Now
    if($diff == 0)
        return 'now';

    // Seconds
    if($diff < 60) {
        $return = $diff.' second'. (($diff==1) ? '' : 's');

    // Minutes
    } elseif($diff < 3600) {
        $minutes = round($diff / 60);
        $return = $minutes .' minute'. (($minutes==1) ? '' : 's');

    // < 4 Hours
    } elseif($diff < 14400) {
        $hours = floor($diff / 3600);
        $minutes = round((($diff / 3600) - $hours) * 60);
        $append = ($minutes > 0) ? ', '.$minutes.' minute'.(($hours==1) ? '' : 's') : '';
        $return = $hours.' hour'.(($hours==1) ? '' : 's').$append;

    // Hours
    } elseif($diff < 86400) {
        $hours = round($diff / 3600);
        $return = $hours .' hours';

    // < 4 Days
    } elseif($diff < 345600) {
        $days = floor($diff / 86400);
        $hours = round((($diff / 86400) - $days) * 24);
        $append = ($hours > 0) ? ', '.$hours.' hour'.(($hours==1) ? '' : 's') : '';
        $return = $days.' day'.(($days==1) ? '' : 's').$append;

    // Days
    } elseif($diff < 2592000) {
        $days = round($diff / 86400);
        $return = $days.' day'.(($days==1) ? '' : 's');

    // < 4 Months
    } elseif($diff < 10511769) {
        $months = floor($diff / 2627942);
        $days = round((($diff / 2627942) - $months) * 30.416);
        $append = ($days > 0) ? ', '.$days.' day'.(($days==1) ? '' : 's') : '';
        $return = $months.' month'.(($months==1) ? '' : 's').$append;

    // Months
    } elseif($diff < 31536000) {
        $months = round($diff / 2627942);
        $return = $months.' month'. (($months==1) ? '' : 's');

    // Years
    } else {
        $years = floor($diff / 31536000);
        $months = round((($diff / 31536000) - $years) * 12);
        $append = ($months > 0) ? ', '.$months.' month'.(($months==1) ? '' : 's') : '';
        $return = $years.' year'.(($years==1) ? '' : 's').$append;

    }
    return $return.' '.$tense;
}