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>'
अमल मुरली

9
इस जादू क्या है ?!
प्लमर

कैसे var_masterpiece का उपयोग करने के बारे में। chrome.google.com/webstore/detail/varmasterpiece/…
vijayrana

मुझे नहीं लगता कि यह वेबस्टोर में था जब सवाल शुरू में पूछा गया था। किसी को भी यह देखने के लिए एक शॉट लायक।
प्लमर

1
मुझे लगता है कि आप बस चाहते हैं print_r($data)php.net/manual/en/function.print-r.php
आकर्षित बेकर

जवाबों:


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?> जोड़ी हो, साथ ही बाहर के आसपास भी एक जोड़ी की आवश्यकता होती है।
बेवॉल्फ़नोडे42

इस 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 करते समय इस तरह से देखता था, लेकिन अब जब मेरे पास wpserver 2.5 है, जो php 5.5.12 के साथ है तो मैं इसे बिना सूचना के देखता हूं। मैं आपके फोटो को पहले कैसे देख सकता था, वैम्पसरवर से अधिक कुछ भी स्थापित किए बिना?
लीमन

1
यह निश्चित रूप से बहुत सेक्सी है। निश्चित नहीं है कि इसे सही समाधान के रूप में चिह्नित क्यों नहीं किया गया है, लेकिन आप इंस्टॉल प्रक्रिया पर अधिक विवरण दे सकते हैं। खिड़कियों पर, यह सिर्फ था extension=php_xdebug.dll, नहींzend_extension=/some/really/long/specific/path/xdebug.so
क्रैंग प्राइम


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 के पेड़।

वैकल्पिक रूप से, मैंने एक बार इस उद्देश्य के लिए इंटरएक्टिववार्ड को एक छोटा सा उपकरण बनाया है । इसकी सीमाएँ निश्चित रूप से हैं, लेकिन यह कभी-कभी बहुत सुविधाजनक भी हो सकता है। भले ही इसे PHP 5 को ध्यान में रखकर बनाया गया हो।


1

अच्छा var_dump प्राप्त करने का सबसे अच्छा और आसान तरीका xDebug का उपयोग करना चाहिए (किसी भी php देव के लिए होना चाहिए) डेबियन तरीका स्थापित करें

कंसोल में: apt-get install php-xdebug उसके बाद आपको php.ini खोलना चाहिए (यह निर्भर करता है कि आप किस स्टैक का उपयोग करते हैं) /etc/php/7.0/fpm/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);

जो परिणाम आपको 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);
}

-12

उपयोग

echo nl2br(var_dump());

यह ^ ^ काम करना चाहिए


9
var_dump कुछ भी वापस नहीं करता है, यह सीधे आउटपुट करता है।
AbraCadaver
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.