var_dump를 예쁘게 보이게


132

$_GET[]DB에서 쿼리를 풀다운 할 때 테스트 데이터를 표시하기위한 간단한 쿼리 변수 세트가 있습니다.

<?php if($_GET['test']): ?>
  <div id="test" style="padding: 24px; background: #fff; text-align: center;">  
    <table>
      <tr style="font-weight: bold;"><td>MLS</td></tr>
      <tr><td><?php echo KEY; ?></td></tr>
      <tr style="font-weight: bold;"><td>QUERY</td></tr>
      <tr><td><?php echo $data_q; ?></td></tr>
      <tr style="font-weight: bold;"><td>DATA</td></tr>
      <tr><td><?php var_dump($data); ?></td></tr>
    </table>    
</div>
<?php endif; ?>

내가 할 때 var_dump, 예상 대로이 큰 배열 문자열은 모두 밀려납니다. 적어도 이것을 위해 줄 바꿈을 추가하거나 var_dump더 읽기 쉬운 방식으로 표시 하는 방법이 있습니까? 게시 된 문자열을 조작하는 것에 대한 jQuery 제안에 개방적입니다.


48
네. echo '<pre>'; var_dump($data); echo '</pre>'.
Amal Murali

9
이 마술은 무엇입니까?!
Plummer

var_masterpiece를 사용하는 방법에 대해 chrome.google.com/webstore/detail/varmasterpiece/…
vijayrana

질문이 처음 제기되었을 때 이것이 웹 스토어에 있다고 생각하지 않습니다. 그것을 찾는 사람에게는 가치가 있습니다.
Plummer

1
난 당신이 원하는 것 같아요 print_r($data). php.net/manual/en/function.print-r.php
Drew Baker

답변:


369

정말 사랑 var_export()합니다. 복사 / 붙여 넣기 가능한 코드가 마음에 들면 다음을 시도하십시오.

echo '<pre>' . var_export($data, true) . '</pre>';

또는 색상 구문 강조를 위해 이와 같은 것 :

highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");

당신도 같은 작업을 수행 할 수 있습니다 print_r(). 들어 var_dump()당신은 단지 추가해야합니다 <pre>태그 :

echo '<pre>';
var_dump($data);
echo '</pre>';

7
그 주 echo, var_export그리고 highlight_string모든 PHP 함수와 내부 될 필요가있다 <?php ?>블록. 예. highlight_string 함수 라인에 <? php?> 쌍이 있지만 외부에도 쌍이 필요합니다.
BeowulfNode42

이 var_dump의 짧은 변형 :var_dump(highlight_string("<?\n". var_export($data, true)));
jhpg

40

PHP 용 xdebug 확장 프로그램을 사용해보십시오 .

예:

<?php var_dump($_SERVER); ?>

출력 :

여기에 이미지 설명을 입력하십시오


7
xdebug는 단순한 var_dump 이상의 기능을 제공합니다 :)
Latheesan

var_dump를 할 때 이와 같이 보았지만 이제는 PHP 5.5.12와 함께 wampserver 2.5가 포맷되지 않은 것으로 보입니다. wampserver 이상의 것을 설치하지 않고 어떻게 사진처럼 보일 수 있습니까?
Limon

1
이것은 확실히 매우 섹시합니다. 이것이 올바른 솔루션으로 표시되지 않은 이유는 확실하지 않지만 설치 프로세스에 대한 자세한 내용을 제공 할 수 있습니다. 창문에, 그냥했다 extension=php_xdebug.dll,하지zend_extension=/some/really/long/specific/path/xdebug.so
Kraang 국무

22

미리 형식화 된 HTML 요소 사용

echo '<pre>';
var_dump($data);
echo '</pre>';

10

@AbraCadaver 답변에 추가했습니다. PHP 시작 및 종료 태그를 삭제하는 자바 스크립트를 포함 시켰습니다. 우리는 더 예쁜 덤프를 청소할 것입니다.

이 같은 사람도있을 수 있습니다.

function dd($data){
  highlight_string("<?php\n " . var_export($data, true) . "?>");
  echo '<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>';
  die();
}

결과 :

여기에 이미지 설명을 입력하십시오

결과 :

여기에 이미지 설명을 입력하십시오

이제 PHP 시작 및 종료 태그가 없습니다.


3

그것이 "모두 밀려났다"면 종종 "소스 코드보기"를 시도해 볼 수 있습니다. 때로는 줄 바꿈이 단순히 표시되지 않는 것으로 판명되면 덤프, 메시지 및 예외는 하나의 긴 문자열 인 것처럼 보입니다. 특히 XML 트리.

또는 이 목적을 위해 InteractiveVarDump 라는 작은 도구를 만들었습니다 . 확실히 한계가 있지만 때로는 매우 편리 할 수도 있습니다. PHP 5를 염두에두고 설계되었지만.


1

좋은 var_dump를 얻는 가장 좋은 방법은 xDebug를 사용하는 것입니다 (모든 PHP 개발자가 필요합니다) Debian way install

콘솔에서 : 그 apt-get install php-xdebug 후 /etc/php/7.0/fpm/php.ini에 대해 php.ini를 열어야합니다 (사용하는 스택에 따라 다름)

검색 display_errors

동일하게 설정-> display_errors = On

html_errors같은 파일을 아래에서 조금 확인하십시오 .On

저장하고 종료

개봉 후 /etc/php/7.0/fpm/conf.d/20-xdebug.ini

그리고 끝에 추가하십시오 :```xdebug.cli_color = 1

```저장하고 종료하십시오.

xdebug에 대한 다른 많은 옵션과 문서는 여기에서 찾을 수 있습니다.

https://xdebug.org/docs/

행운을 빌고 재미있게 보내 !!!

결과



1

다음은 꽤 var_dump를 갖는 함수입니다. Xdebug 와 함께 사용 하면 덤프 대상을 더 잘 볼 수 있습니다.

Xdebug의 표시를 약간 개선했습니다 (약간의 간격을두고 값 사이의 구분 기호, 긴 변수 줄 바꿈 등).

함수를 호출하면 페이지에서 모든 var_dump를 구별하기 위해 제목, 배경, 텍스트 색상을 설정할 수 있습니다.

아니면;)

/**
 * Pretty var_dump 
 * Possibility to set a title, a background-color and a text color
 */ 
function dump($data, $title="", $background="#EEEEEE", $color="#000000"){

    //=== Style  
    echo "  
    <style>
        /* Styling pre tag */
        pre {
            padding:10px 20px;
            white-space: pre-wrap;
            white-space: -moz-pre-wrap;
            white-space: -pre-wrap;
            white-space: -o-pre-wrap;
            word-wrap: break-word;
        }

        /* ===========================
        == To use with XDEBUG 
        =========================== */
        /* Source file */
        pre small:nth-child(1) {
            font-weight: bold;
            font-size: 14px;
            color: #CC0000;
        }
        pre small:nth-child(1)::after {
            content: '';
            position: relative;
            width: 100%;
            height: 20px;
            left: 0;
            display: block;
            clear: both;
        }

        /* Separator */
        pre i::after{
            content: '';
            position: relative;
            width: 100%;
            height: 15px;
            left: 0;
            display: block;
            clear: both;
            border-bottom: 1px solid grey;
        }  
    </style>
    ";

    //=== Content            
    echo "<pre style='background:$background; color:$color; padding:10px 20px; border:2px inset $color'>";
    echo    "<h2>$title</h2>";
            var_dump($data); 
    echo "</pre>";

}

1
function var_view($var)
{

    ini_set("highlight.keyword", "#a50000;  font-weight: bolder");
    ini_set("highlight.string", "#5825b6; font-weight: lighter; ");

    ob_start();
    highlight_string("<?php\n" . var_export($var, true) . "?>");
    $highlighted_output = ob_get_clean();

    $highlighted_output = str_replace( ["&lt;?php","?&gt;"] , '', $highlighted_output );

    echo $highlighted_output;
    die();
}

1

나는 이것을 복제물로 닫을만큼 충분한 담당자가없는 것 같지만 다른 누군가가 그렇게 할 수있는 사람입니다. PHP에서 더 예쁘고 유익한 Var_dump 대안에 같은 내용을 게시 했습니까?그러나 시간을 절약하기 위해 여기에 복사하여 붙여 넣을 것입니다.

다른 솔루션의 단계를 실제로 거치고 싶지 않기 때문에 여기에 다른 답변을 추가해야했습니다. 그것은 매우 간단하고 확장명, 포함 등이 필요하지 않으며 내가 선호하는 것입니다. 매우 쉽고 빠릅니다.

먼저 문제의 변수를 json_encode하십시오.

echo json_encode($theResult);

결과를 http://jsoneditoronline.org/ 의 JSON 편집기에 복사하고 왼쪽 창에 복사하고 복사>를 클릭하면 JSON이 정말 멋진 트리 형식으로 인쇄됩니다.

각자 자신에게, 그러나 이것은 다른 사람들이 하나 더 좋은 옵션을 갖는 데 도움이되기를 바랍니다. :)



-2

debug_display인쇄, 배열, 객체 및 파일 정보를 예쁜 방식으로 인쇄 할 수 있는 함수 ( )를 작성했습니다 .

<?php
function debug_display($var,$show = false) {
    if($show) { $dis = 'block'; }else { $dis = 'none'; }
    ob_start();
    echo '<div style="display:'.$dis.';text-align:left; direction:ltr;"><b>Idea Debug Method : </b>
        <pre>';
    if(is_bool($var)) {
        echo $var === TRUE ? 'Boolean(TRUE)' : 'Boolean(FALSE)';
    }else {
        if(FALSE == empty($var) && $var !== NULL && $var != '0') {
            if(is_array($var)) {
                echo "Number of Indexes: " . count($var) . "\n";
                print_r($var);
            } elseif(is_object($var)) {
                print_r($var);
            } elseif(@is_file($var)){
                $stat = stat($var);
                $perm = substr(sprintf('%o',$stat['mode']), -4);
                $accesstime = gmdate('Y/m/d H:i:s', $stat['atime']);
                $modification = gmdate('Y/m/d H:i:s', $stat['mtime']);
                $change = gmdate('Y/m/d H:i:s', $stat['ctime']);
                echo "
    file path : $var
    file size : {$stat['size']} Byte
    device number : {$stat['dev']}
    permission : {$perm}
    last access time was : {$accesstime}
    last modified time was : {$modification}
    last change time was : {$change}
    ";
            }elseif(is_string($var)) {
                print_r(htmlentities(str_replace("\t", '  ', $var)));
            }  else {
                print_r($var);
            }
        }else {
            echo 'Undefined';
        }
    }
    echo '</pre>
    </div>';
    $output = ob_get_contents();
    ob_end_clean();
    echo $output;
    unset($output);
}

-12

사용하다

echo nl2br(var_dump());

이 작동합니다 ^^


9
var_dump는 아무것도 반환하지 않고 직접 출력합니다.
AbraCadaver
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.