Programming

PHP 용으로 예쁜 글씨가 있습니까?

procodes 2020. 7. 29. 22:20
반응형

PHP 용으로 예쁜 글씨가 있습니까?


일부 PHP 스크립트를 수정하고 있으며 루비의 예쁜 프린터가 없습니다.

require 'pp'
arr = {:one => 1}
pp arr

{: one => 1}을 출력합니다. 이것은 심지어 상당히 복잡한 객체에서도 작동하며 알 수없는 스크립트로 파는 것을 훨씬 쉽게 만듭니다. PHP에서이 기능을 복제 할 수있는 방법이 있습니까?


print_r()var_dump()출력 할 것이다 PHP 내의 오브젝트의 시각적 표현.

$arr = array('one' => 1);
print_r($arr);
var_dump($arr);

이것이 내 배열을 인쇄하는 데 사용하는 것입니다.

<pre>
    <?php
        print_r($your_array);
    ?>
</pre>

마술은 pre태그 와 함께 제공됩니다 .


간단히하기 위해 print_r ()var_dump () 는 이길 수 없습니다. 조금 더 멋진 것을 원하거나 큰 목록 및 / 또는 깊게 중첩 된 데이터를 처리하는 경우 Krumo 는 삶을 훨씬 쉽게 만들어줍니다. 멋진 형식의 축소 / 확장 디스플레이를 제공합니다.


내가 찾은 최고의 것은 이것입니다 :

echo "<pre>";
print_r($arr);
echo "</pre>";

그리고 당신이 그것을 더 자세히 원한다면 :

echo "<pre>";
var_dump($arr);
echo "</pre>";

<pre>웹 개발 환경에서 HTML 태그를 추가하면 HTML \n을 추가하지 않고도 인쇄 기능 의 줄 바꿈 을 올바르게 준수 할 수 있습니다.<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은 어떻습니까?

http://www.php.net/print_r


html_errors = onxdebug와 함께 var_dump ()를 꽤 인쇄하려면 php.ini 에서 설정해야합니다 .


가장 좋은 방법은

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
    [바] => 888
    [푸] => 배열
        (
            [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));

Windows 용 syslog 또는 eventlog로 전송


더 많은 디버깅을 수행하는 경우 Xdebug 가 필수적입니다. 기본적으로 PHP의 default보다 많은 정보를 표시하는var_dump() 자체 버전으로 재정의 됩니다var_dump() .

Zend_Debug있습니다 .


나는 print_r 명령으로 "쉼표 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_dump (배열 ( "a", "b"=> "2", "c"=> 배열 ( "d", "e"=> 배열 ( "f", "g"))));

다음과 같이 보일 것입니다 :

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

출처:

<?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(" ","&nbsp;",$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');
    }
}

Google에서 검색하여 문제를 쉽게 읽을 수 있도록 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');

(텍스트 / json을 수행하면 많은 브라우저가 다운로드를 요구합니다 ... 페이스 북은 그래프 프로토콜에 대해 텍스트 / 자바 스크립트를 수행하므로 너무 나쁘지 않아야합니다)


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>';
    }

도움이 되길 바랍니다. Tziuka 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_PRETTY_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로 인쇄하고 깔끔하게 출력 할 수 있습니다.

파일 포함, 객체, 배열, null 대 false 등을 처리합니다.

보다 환경적인 방식으로 설정을 사용할 때 전 세계적으로 액세스 가능하지만 범위가 넓은 도우미가 있습니다.

동적, 배열 기반 또는 문자열 옵션 인수.

그리고 나는 계속해서 덧붙입니다. 그래서 그것은 지원됩니다 : D

참고 URL : https://stackoverflow.com/questions/1168175/is-there-a-pretty-print-for-php

반응형