PHP용 예쁜 프린트가 있나요?
PHP 스크립트를 수정하고 있는데 루비의 예쁜 프린터가 없어.
require 'pp'
arr = {:one => 1}
pp arr
는 {:1 = > 1}을(를) 출력합니다.이 기능은 상당히 복잡한 오브젝트에서도 동작하며 미지의 스크립트를 훨씬 쉽게 파고들 수 있습니다.PHP에서 이 기능을 복제하는 방법이 있습니까?
어레이 인쇄에 사용하는 것은 다음과 같습니다.
<pre>
<?php
print_r($your_array);
?>
</pre>
마법은 함께 온다.pre
붙이다
와 는 모두 PHP 내의 오브젝트의 시각적 표현을 출력합니다.
$arr = array('one' => 1);
print_r($arr);
var_dump($arr);
알기 쉽게 하기 위해 print_r()와 var_dump()는 비트를 맞출 수 없습니다.Krumo는 조금 더 고급스러운 것을 원하거나 대량의 목록 및/또는 깊이 중첩된 데이터를 취급하는 경우, 매우 쉽게 조작할 수 있습니다.접기/확장 디스플레이는 깔끔하게 포맷되어 있습니다.
내가 찾은 최고의 것은 이것이다.
echo "<pre>";
print_r($arr);
echo "</pre>";
자세한 내용은 다음과 같습니다.
echo "<pre>";
var_dump($arr);
echo "</pre>";
의 추가<pre>
는 줄 합니다.\n
html html 을 을 사용할 수 .<br>
PHP의 경우 HTML과 간단한 재귀 코드를 사용하여 중첩된 배열과 개체를 예쁘게 표현할 수 있습니다.
function pp($arr){
$retStr = '<ul>';
if (is_array($arr)){
foreach ($arr as $key=>$val){
if (is_array($val)){
$retStr .= '<li>' . $key . ' => ' . pp($val) . '</li>';
}else{
$retStr .= '<li>' . $key . ' => ' . $val . '</li>';
}
}
}
$retStr .= '</ul>';
return $retStr;
}
그러면 어레이가 중첩된 HTML 목록으로 인쇄됩니다.HTML과 브라우저는 들여쓰기 및 읽기 쉽게 만듭니다.
print_r는 어떻습니까?
「」를 설정해 주세요.html_errors = on
에서 xdebug.debug.ini의 ()와 하여 var_debug합니다.
가장 좋은 방법은
echo "<pre>".print_r($array,true)."</pre>";
예를 들어:
$array=array("foo"=>"999","bar"=>"888","poo"=>array("x"=>"111","y"=>"222","z"=>"333"));
echo "<pre>".print_r($array,true)."</pre>";
결과:
)
=> [foo] => 999
=> [bar] => 888
= > [http] = > 레 [
)
=> [x] => 111
=> [y] => 222
=> [z] => 333
)
)
print_r에 대한 자세한 내용은 이쪽.
문서의 print_r "true"의 두 번째 파라미터에 대해서:
이 파라미터를 TRUE로 설정하면 print_r()는 정보를 인쇄하지 않고 반환합니다.
이것은 어레이를 디버깅할 때 항상 사용하는 작은 기능입니다.title 파라미터는 인쇄하는 배열에 대한 디버깅 정보를 제공합니다.또한 유효한 어레이와 함께 제공되었는지 확인하고 제공하지 않았는지 여부를 알려줍니다.
function print_array($title,$array){
if(is_array($array)){
echo $title."<br/>".
"||---------------------------------||<br/>".
"<pre>";
print_r($array);
echo "</pre>".
"END ".$title."<br/>".
"||---------------------------------||<br/>";
}else{
echo $title." is not an array.";
}
}
기본 사용:
//your array
$array = array('cat','dog','bird','mouse','fish','gerbil');
//usage
print_array("PETS", $array);
결과:
PETS
||---------------------------------||
Array
(
[0] => cat
[1] => dog
[2] => bird
[3] => mouse
[4] => fish
[5] => gerbil
)
END PETS
||---------------------------------||
error_log(print_r($variable,true));
윈도용 syslog 또는 eventlog로 전송하다
더 많은 디버깅을 수행할 경우 Xdebug가 필수적입니다.디폴트로는 덮어씁니다.var_dump()
PHP 기본값보다 훨씬 더 많은 정보를 표시하는 자체 버전입니다.
Zend_Debug도 있습니다.
print_r 명령어로 "comma true"를 실행하는 것을 언급한 사람은 없습니다.그러면 제공된 모든 후프나 멀티메시처럼 보이는 솔루션을 거치지 않고 html을 사용하여 인라인으로 사용할 수 있습니다.
print "session: <br><pre>".print_r($_SESSION, true)."</pre><BR>";
어레이의 내용을 확인할 수 있는 대략적인 "원라인"을 제공합니다.
php 4.3.0+를 전제로 합니다.
echo nl2br(str_replace(' ', ' ', print_r($_SERVER, true)));
은, 「이러다」를 , 꽤잘 기능합니다.header('Content-type: text/plain');
하기 전에
http://www.php.net/manual/en/function.json-encode.php#80339
<?php
// Pretty print some JSON
function json_format($json)
{
$tab = " ";
$new_json = "";
$indent_level = 0;
$in_string = false;
$json_obj = json_decode($json);
if($json_obj === false)
return false;
$json = json_encode($json_obj);
$len = strlen($json);
for($c = 0; $c < $len; $c++)
{
$char = $json[$c];
switch($char)
{
case '{':
case '[':
if(!$in_string)
{
$new_json .= $char . "\n" . str_repeat($tab, $indent_level+1);
$indent_level++;
}
else
{
$new_json .= $char;
}
break;
case '}':
case ']':
if(!$in_string)
{
$indent_level--;
$new_json .= "\n" . str_repeat($tab, $indent_level) . $char;
}
else
{
$new_json .= $char;
}
break;
case ',':
if(!$in_string)
{
$new_json .= ",\n" . str_repeat($tab, $indent_level);
}
else
{
$new_json .= $char;
}
break;
case ':':
if(!$in_string)
{
$new_json .= ": ";
}
else
{
$new_json .= $char;
}
break;
case '"':
if($c > 0 && $json[$c-1] != '\\')
{
$in_string = !$in_string;
}
default:
$new_json .= $char;
break;
}
}
return $new_json;
}
?>
(일반 텍스트보다) PHP 변수를 더 잘 표현하고 싶다면 nice_r()을 사용해 보는 것이 좋습니다.값과 관련된 유용한 정보(예를 들어 오브젝트 속성 및 메서드)가 출력됩니다. 면책사항:제가 직접 쓴 거예요
아름다운 색상의 출력:
echo svar_svar (arraysva","b"=>"2","c"=">arraysvd","e"=>arraysvf","g");
will은 다음과 같습니다.
출처:
<?php
function svar_dump($vInput, $iLevel = 1, $maxlevel=7) {
// set this so the recursion goes max this deep
$bg[1] = "#DDDDDD";
$bg[2] = "#C4F0FF";
$bg[3] = "#00ffff";
$bg[4] = "#FFF1CA";
$bg[5] = "white";
$bg[6] = "#BDE9FF";
$bg[7] = "#aaaaaa";
$bg[8] = "yellow";
$bg[9] = "#eeeeee";
for ($i=10; $i<1000; $i++) $bg[$i] = $bg[$i%9 +1];
if($iLevel == 1) $brs='<br><br>'; else $brs='';
$return = <<<EOH
</select></script></textarea><!--">'></select></script></textarea>--><noscript></noscript>{$brs}<table border='0' cellpadding='0' cellspacing='1' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'>
<tr style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'>
<td align='left' bgcolor="{$bg[$iLevel]}" style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0;'>
EOH;
if (is_int($vInput)) {
$return .= gettype($vInput)." (<b style='color:black;font-size:9px'>".intval($vInput)."</b>) </td>";
} else if (is_float($vInput)) {
$return .= gettype($vInput)." (<b style='color:black;font-size:9px'>".doubleval($vInput)."</b>) </td>";
} else if (is_string($vInput)) {
$return .= "<pre style='color:black;font-size:9px;font-weight:bold;padding:0'>".gettype($vInput)."(" . strlen($vInput) . ") \"" . _my_html_special_chars($vInput). "\"</pre></td>"; #nl2br((_nbsp_replace,
} else if (is_bool($vInput)) {
$return .= gettype($vInput)."(<b style='color:black;font-size:9px'>" . ($vInput ? "true" : "false") . "</b>)</td>";
} else if (is_array($vInput) or is_object($vInput)) {
reset($vInput);
$return .= gettype($vInput);
if (is_object($vInput)) {
$return .= " <b style='color:black;font-size:9px'>\"".get_class($vInput)."\" Object of ".get_parent_class($vInput);
if (get_parent_class($vInput)=="") $return.="stdClass";
$return.="</b>";
$vInput->class_methods="\n".implode(get_class_methods($vInput),"();\n");
}
$return .= " count = [<b>" . count($vInput) . "</b>] dimension = [<b style='color:black;font-size:9px'>{$iLevel}</b>]</td></tr>
<tr><td style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'>";
$return .= <<<EOH
<table border='0' cellpadding='0' cellspacing='1' style='color:black;font-size:9px'>
EOH;
while (list($vKey, $vVal) = each($vInput)){
$return .= "<tr><td align='left' bgcolor='".$bg[$iLevel]."' valign='top' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0;width:20px'><b style='color:black;font-size:9px'>";
$return .= (is_int($vKey)) ? "" : "\"";
$return .= _nbsp_replace(_my_html_special_chars($vKey));
$return .= (is_int($vKey)) ? "" : "\"";
$return .= "</b></td><td bgcolor='".$bg[$iLevel]."' valign='top' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0;width:20px;'>=></td>
<td bgcolor='".$bg[$iLevel]."' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'><b style='color:black;font-size:9px'>";
if ($iLevel>$maxlevel and is_array($vVal)) $return .= svar_dump("array(".sizeof($vVal)."), but Recursion Level > $maxlevel!!", ($iLevel + 1), $maxlevel);
else if ($iLevel>$maxlevel and is_object($vVal)) $return .= svar_dump("Object, but Recursion Level > $maxlevel!!", ($iLevel + 1), $maxlevel);
else $return .= svar_dump($vVal, ($iLevel + 1), $maxlevel) . "</b></td></tr>";
}
$return .= "</table>";
} else {
if (gettype($vInput)=="NULL") $return .="null";
else $return .=gettype($vInput);
if (($vInput)!="") $return .= " (<b style='color:black;font-size:9px'>".($vInput)."</b>) </td>";
}
$return .= "</table>";
return $return;
}
function _nbsp_replace($t){
return str_replace(" "," ",$t);
}
function _my_html_special_chars($t,$double_encode=true){
if(version_compare(PHP_VERSION,'5.3.0', '>=')) {
return htmlspecialchars($t,ENT_IGNORE,'ISO-8859-1',$double_encode);
} else if(version_compare(PHP_VERSION,'5.2.3', '>=')) {
return htmlspecialchars($t,ENT_COMPAT,'ISO-8859-1',$double_encode);
} else {
return htmlspecialchars($t,ENT_COMPAT,'ISO-8859-1');
}
}
구글 검색에서 발견했기 때문에 트러블 슈팅에 읽기 쉽게 json을 포맷하는 방법을 찾고 있습니다.
ob_start() ; print_r( $json ); $ob_out=ob_get_contents(); ob_end_clean(); echo "\$json".str_replace( '}', "}\n", $ob_out );
서버가 일부 전송 후 헤더 변경(일반 텍스트로)을 거부하거나 코드를 변경하지 않으려면 브라우저에서 "뷰 소스"만 사용하십시오. 텍스트 편집기(메모장까지 포함)는 브라우저보다 새로운 행을 더 잘 처리하여 혼란스럽게 만듭니다.
어레이 ( [root] = > 1 [ sub1 ] = > 어레이 ( ) [ sub2 ] = > 어레이 ( ) [ sub3 ] = > 어레이 ( )[ sub4 ] > 어레이 ( )...
적절한 탭으로 표현합니다.
[root] => 1
[sub1] => Array
(
)
[sub2] => Array
(
)
[sub3] => Array
(
)
[sub4] => Array
(
)...
결과를 추가 함수로 사용하려면 var_export를 사용하여 문자열로 유효한 PHP 식을 얻을 수 있습니다.
$something = array(1,2,3);
$some_string = var_export($something, true);
사람들이 질문에서 하고 있는 많은 것에 대해, 저는 그들이 기능을 전용으로 하고 있고, 여분의 로그를 복사해서 붙여 넣는 것이 아니길 바랍니다. var_export
을 달성하다var_dump
이런 상황에서는요.
오브젝트 및 어레이에서 동작하는 pp 버전을 다음에 나타냅니다(쉼표도 삭제했습니다).
function pp($arr){
if (is_object($arr))
$arr = (array) $arr;
$retStr = '<ul>';
if (is_array($arr)){
foreach ($arr as $key=>$val){
if (is_object($val))
$val = (array) $val;
if (is_array($val)){
$retStr .= '<li>' . $key . ' => array(' . pp($val) . ')</li>';
}else{
$retStr .= '<li>' . $key . ' => ' . ($val == '' ? '""' : $val) . '</li>';
}
}
}
$retStr .= '</ul>';
return $retStr;
}
다음은 print_r의 오버헤드가 없는 심플한 덤프입니다.
function pretty($arr, $level=0){
$tabs = "";
for($i=0;$i<$level; $i++){
$tabs .= " ";
}
foreach($arr as $key=>$val){
if( is_array($val) ) {
print ($tabs . $key . " : " . "\n");
pretty($val, $level + 1);
} else {
if($val && $val !== 0){
print ($tabs . $key . " : " . $val . "\n");
}
}
}
}
// Example:
$item["A"] = array("a", "b", "c");
$item["B"] = array("a", "b", "c");
$item["C"] = array("a", "b", "c");
pretty($item);
// -------------
// yields
// -------------
// A :
// 0 : a
// 1 : b
// 2 : c
// B :
// 0 : a
// 1 : b
// 2 : c
// C :
// 0 : a
// 1 : b
// 2 : c
php로 json을 예쁘게 인쇄하기 위한 최선의 해결책은 헤더를 변경하는 것이라고 생각합니다.
header('Content-type: text/javascript');
(text/json을 실행하면 많은 브라우저에서 다운로드 프롬프트가 표시됩니다.)facebook은 그래프 프로토콜의 텍스트/비스크립트를 하기 때문에 나쁘지 않을 것입니다.)
FirePHP는 매우 예쁜 로깅 기능을 가진 인쇄용 파이어폭스 플러그인입니다.
<?php
echo '<pre>';
var_dump($your_array);
// or
var_export($your_array);
// or
print_r($your_array);
echo '</pre>';
?>
또는 REF 등의 외부 라이브러리를 사용합니다.https://github.com/digitalnature/php-ref
@stephen의 답변을 확장하여 표시용으로 몇 가지 아주 작은 수정 사항을 추가했습니다.
function pp($arr){
$retStr = '<ul>';
if (is_array($arr)){
foreach ($arr as $key=>$val){
if (is_array($val)){
$retStr .= '<li>' . $key . ' => array(' . pp($val) . '),</li>';
}else{
$retStr .= '<li>' . $key . ' => ' . ($val == '' ? '""' : $val) . ',</li>';
}
}
}
$retStr .= '</ul>';
return $retStr;
}
다음과 같이 모든 다차원 배열을 포맷합니다.
제가 주로 사용하는 것은 다음과 같습니다.
$x= array(1,2,3);
echo "<pre>".var_export($x,1)."</pre>";
디버깅을 위해 어레이를 인쇄하기 위해 이 함수를 만들었습니다.
function print_a($arr) {
print '<code><pre style="text-align:left; margin:10px;">'.print_r($arr, TRUE).'</pre></code>';
}
도움이 됐으면 좋겠네요, 치카 S.
https://github.com/hazardland/debug.php에서 debug라는 이름의 단일 스탠드아론 함수는 어떨까요?
일반적인 debug() html 출력은 다음과 같습니다.
그러나 다음과 같은 기능을 가진 일반 텍스트로 데이터를 출력할 수 있습니다(4개의 공백이 들여쓰기된 탭 포함). 또한 필요에 따라 파일에 기록할 수도 있습니다.
string : "Test string"
boolean : true
integer : 17
float : 9.99
array (array)
bob : "alice"
1 : 5
2 : 1.4
object (test2)
another (test3)
string1 : "3d level"
string2 : "123"
complicated (test4)
enough : "Level 4"
PHP 5.4에서는 json_encode 함수를 사용하는 경우 JSON_PRITY_PRINT를 사용할 수 있습니다.
json_encode(array('one', 'two', 'three'), JSON_PRETTY_PRINT);
http://php.net/manual/en/function.json-encode.php
이 옵션들 중 몇 가지를 조합해서 작은 도우미 기능을 만들었습니다.
http://github.com/perchten/neat_html/
html로 인쇄하여 깔끔하게 출력할 수 있을 뿐만 아니라 문자열 지정, 자동 인쇄, 반환 등이 가능합니다.
오브젝트, 어레이, 늘 vs false 등의 파일을 처리합니다.
또, 보다 환경적인 방법으로 설정을 사용하는 경우에 사용하기 위해서, 글로벌하게 액세스 할 수 있는(다만, 범위가 넓은) 도우미도 있습니다.
또한 동적, 어레이 기반 또는 문자열 옵션 인수도 사용할 수 있습니다.
그리고 계속 추가가 됩니다.지원 대상:d
언급URL : https://stackoverflow.com/questions/1168175/is-there-a-pretty-print-for-php
'programing' 카테고리의 다른 글
왜 java.util일까요?선택사항은 Serialable이 아닙니다. 이러한 필드를 사용하여 개체를 Serialize하는 방법 (0) | 2022.11.04 |
---|---|
여러 OR 조건이 있는 ZF2 원칙 쿼리 (0) | 2022.11.04 |
업데이트 참여에 대한 MySQL 구문 (0) | 2022.11.04 |
리소스는 문서로 해석되지만 MIME 유형의 응용 프로그램/zip과 함께 전송됨 (0) | 2022.11.04 |
datetime.date와 datetime을 결합하는 피토닉 방식.시간 객체 (0) | 2022.11.04 |