var_dumpをきれいに見せる


131

$_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 2013年

9
この魔法とは!?
Plummer

var_masterpieceの使用についてはどうでしょう。chrome.google.com/webstore/detail/varmasterpiece/...
vijayrana

質問が最初に出されたとき、これはウェブストアにあったとは思いません。誰もがそれを覗き見る価値がある。
プラマー

1
ただ欲しいと思いますprint_r($data)php.net/manual/en/function.print-r.php
Drew Baker

回答:


368

本当に大好き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
なおechovar_export、およびhighlight_stringすべてのPHP関数と内側にあるする必要がある<?php ?>ブロック。はい、highlight_string関数行には<?php?>ペアが含まれていますが、ペアも外側に必要です。
BeowulfNode42 2017年

このvar_dumpの短いバリエーション:var_dump(highlight_string("<?\n". var_export($data, true)));
jhpg

40

phpのxdebug拡張機能を試してください。

例:

<?php var_dump($_SERVER); ?>

出力:

ここに画像の説明を入力してください


7
注意してください、xdebugはALLOTを単なるvar_dumpだけではありません:)
Latheesan

以前はvar_dumpを実行するときにこのように表示されていましたが、php 5.5.12でwampserver 2.5を使用しているため、フォーマットされていないことがわかります。wampserver以外のものをインストールせずに、なぜ私は以前にあなたの写真のように見えるのですか?
リモン2014年

1
これは間違いなくとてもセクシーです。これが正しい解決策としてマークされていない理由はわかりませんが、インストールプロセスの詳細を示すことができます。ウィンドウズでは、それはただのextension=php_xdebug.dllではなくzend_extension=/some/really/long/specific/path/xdebug.so
Kraang Prime


10

@AbraCadaverの回答に追加しました。PHPの開始タグと終了タグを削除するJavaScriptスクリプトを含めました。よりきれいなダンプをきれいにします。

このような誰かかもしれません。

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

それが「すべて一緒に押しつぶされた」場合は、古い「ソースコードの表示」を試すことができます。ダンプ、メッセージ、および例外は、改行が表示されないことが判明したときに、1つの長い文字列のように見える場合があります。特にXMLツリー。

あるいは、この目的のためにInteractiveVarDumpと呼ばれる小さな小さなツールを作成しました。それには確かに限界がありますが、時には非常に便利なこともあります。PHP 5を念頭に置いて設計されていますが。


1

素敵なvar_dumpを取得するための最善かつ最も簡単な方法は、xDebugを使用することです(すべてのphp devに必須)Debianの方法でインストールする

コンソールで: 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

私はこれを複製として閉じるのに十分な担当者がいないようですが、誰か他の人がそれを行うことができればそれは1つです。私は同じことをPHPのもっときれいで有益なVar_dump代替に投稿しましたか?ただし、時間を節約するために、ここにもコピーして貼り付けます。

他のソリューションの手順を実際に実行したくなかったため、ここに別の回答を追加する必要がありました。それは非常にシンプルで、拡張機能やインクルードなどを必要とせず、私が好むものです。とても簡単でとても速いです。

まず、問題の変数をjson_encodeします。

echo json_encode($theResult);

取得した結果をJSONエディター(http://jsoneditoronline.org/)にコピーします。コピーし、左側のペインにコピーして[コピー]をクリックすると、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);
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.