数组格式化原样输出

function printr($var)
{
    ob_start();
    print_r($var);
    $output = ob_get_clean();


    //键值加引号
    preg_match_all('/\=\> (?!(Array)).*/', $output, $match);

    $pattern = $replacement = [];
    $n = 0;
    preg_match_all('/\[.*\]/', $output, $match);

    foreach ($match[0] as $val) {
        for ($i=0;isset($val[$i]);$i++) {

            switch ($val[$i]) {
                case '[':
                    $pattern[$n] = '[';
                    $replacement[$n] = '\'';
                    break;
                case ']':
                    $pattern[$n] .= ']';
                    $replacement[$n] .= '\'';
                    break;
                default:
                    $pattern[$n] .= $val[$i];
                    $replacement[$n] .= $val[$i];
                    break;
            }
        }
        $pattern[$n] = '/'.preg_quote($pattern[$n]).'/';

        $n++;
    }

    $output = preg_replace($pattern, $replacement, $output);
    //键值加引号


    //值加逗号,注意值不能是A,Ar,Arr,Arra,Array
    $array = explode("\n",$output);
    $output = '';
    foreach ($array as $val) {
        if (strpos($val,'=>')){
            if (strpos($val,'Array')) {
                $output .= $val."\n";
            } else {
                $output .= str_replace(['=> '],['=> \''],$val)."',\n";
            }
        } elseif ($val) {
            $output .= $val."\n";
        }
    }
    //值加逗号


    //括号加逗号
    $pattern = $replacement = [];
    $n = 0;
    preg_match_all('/\)\s+\'/', $output, $match);

    foreach ($match[0] as $val) {
        for ($i=0;isset($val[$i]);$i++) {

            switch ($val[$i]) {
                case ')':
                    $pattern[$n] = ')';
                    $replacement[$n] = "),";
                    break;
                default:
                    $pattern[$n] .= $val[$i];
                    $replacement[$n] .= $val[$i];
                    break;
            }
        }
        $pattern[$n] = '/'.preg_quote($pattern[$n]).'/';

        $n++;
    }

    $output = preg_replace($pattern, $replacement, $output);
    //括号加逗号


    echo '<pre>' . $output . '</pre>';
}

猜你喜欢

转载自blog.csdn.net/m0_37711659/article/details/89491404