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"), ' ', $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;
}