web-dev-qa-db-ja.com

var_dumpをきれいに見せる

DBからクエリをプルダウンするときにテストデータを表示するための単純な$_GET[]クエリ変数セットがあります。

<?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の提案を受け入れています。

106
Plummer

私はvar_export()が大好きです。コピー/貼り付け可能なコードが好きなら、試してください:

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

または、カラー構文の強調表示のために次のようなものでも:

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

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

例:

<?php var_dump($_SERVER); ?>

出力:

enter image description here

37
Latheesan

事前にフォーマットされたHTMLコードを使用する

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

@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();
}

前の結果:

enter image description here

結果:

enter image description here

現在、PHPの開始タグと終了タグはありません

9
Muhammad Awais

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

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

3
WoodrowShigeru

Nice var_dumpを取得する最も簡単で簡単な方法は、xDebugを使用することです(すべてのphp開発に必要)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
Moris Finkel

debugVar()の代わりにこれを使用できますvar_dump()

チェックアウト: https://github.com/E1NSER/php-debug-function

1
Sascha Eisner

これは、かなり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
Arno
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", '', $highlighted_output );
    $highlighted_output = str_replace( "?&gt;", '', $highlighted_output );

    echo $highlighted_output;
    die();
}
0
Mr.Hosseini

このためのSymfonyパッケージがあります: https://symfony.com/doc/current/components/var_dumper.html

0
Michael Käfer