strip_tags remove inicio fin etiquetas ejemplo php pretty-print

remove - ¿Hay una bonita impresión para PHP?



strip_tags php ejemplo (30)

Estoy arreglando algunos scripts PHP y me falta la bonita impresora de ruby. es decir

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

generará {: one => 1}. Esto incluso funciona con objetos bastante complejos y hace que cavar en un guión desconocido sea mucho más fácil. ¿Hay alguna manera de duplicar esta funcionalidad en PHP?



¿Qué tal una sola función independiente llamada depuración de https://github.com/hazardland/debug.php .

El resultado típico de depuración de html () se ve así:

Pero también puede generar datos como un texto sin formato con la misma función (con 4 espacios de sangría) como este (e incluso registrarlo en el archivo si es necesario):

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"


Ampliando la respuesta de @ stephen, se agregaron algunos retoques menores para mostrar.

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

Formateará cualquier matriz multidimensional de la siguiente manera:


Aquí hay otro volcado simple sin todos los gastos generales de 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


Aquí hay una versión de pp que funciona tanto para objetos como para matrices (también saqué las comas):

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


Creo que la mejor solución para imprimir bonita json en php es cambiar el encabezado:

header(''Content-type: text/javascript'');

(Si haces text / json, muchos navegadores solicitarán una descarga ... Facebook hace texto / javascript para su protocolo de gráficos, así que no debe ser tan malo)


Desde que encontré esto a través de google buscando cómo formatear json para que sea más legible para la resolución de problemas.

ob_start() ; print_r( $json ); $ob_out=ob_get_contents(); ob_end_clean(); echo "/$json".str_replace( ''}'', "}/n", $ob_out );



Esta es una pequeña función que uso todo el tiempo, es útil si está depurando matrices. El parámetro title le proporciona cierta información de depuración como qué matriz está imprimiendo. también verifica si le ha proporcionado una matriz válida y le permite saber si no lo hizo.

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."; } }

Uso básico:

//your array $array = array(''cat'',''dog'',''bird'',''mouse'',''fish'',''gerbil''); //usage print_array("PETS", $array);

Resultados:

PETS ||---------------------------------|| Array ( [0] => cat [1] => dog [2] => bird [3] => mouse [4] => fish [5] => gerbil ) END PETS ||---------------------------------||


Esta función funciona bastante bien siempre que establezca el header(''Content-type: text/plain''); antes de dar salida a la cadena de retorno

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


Esto es lo que uso para imprimir mis matrices:

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

La magia viene con la etiqueta pre .


Esto es lo que usualmente uso:

$x= array(1,2,3); echo "<pre>".var_export($x,1)."</pre>";


FirePHP es un complemento de Firefox que tiene una función de registro bastante bonita.


Hice esta función para imprimir una matriz para la depuración:

function print_a($arr) { print ''<code><pre style="text-align:left; margin:10px;">''.print_r($arr, TRUE).''</pre></code>''; }

Espero que ayude, Tziuka S.


La mejor forma de hacerlo es

echo "<pre>".print_r($array,true)."</pre>";

Ejemplo:

$array=array("foo"=>"999","bar"=>"888","poo"=>array("x"=>"111","y"=>"222","z"=>"333")); echo "<pre>".print_r($array,true)."</pre>";

Resultado:

Formación
(
[foo] => 999
[bar] => 888
[poo] => Matriz
(
[x] => 111
[y] => 222
[z] => 333
)
)

Leer más sobre print_r .

Acerca del segundo parámetro de print_r "verdadero" de la documentación:

Cuando este parámetro se establece en TRUE, print_r () devolverá la información en lugar de imprimirla.


Lo mejor que he encontrado hasta ahora es esto:

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

Y si lo quieres más detallado:

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

Agregar una etiqueta <pre> HTML en un entorno de desarrollo web respetará correctamente las líneas nuevas /n de la función de impresión, sin tener que agregar algunos html <br>


No vi que alguien mencionara hacer una "coma verdadera" con su comando print_r, y luego PUEDE usarlo en línea con html sin pasar por todos los aros o soluciones de aspecto desordenado proporcionadas.

print "session: <br><pre>".print_r($_SESSION, true)."</pre><BR>";


Para PHP, puede aprovechar fácilmente el HTML y algunos códigos recursivos simples para hacer una bonita representación de matrices y objetos anidados.

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

Esto imprimirá la matriz como una lista de listas HTML anidadas. HTML y su navegador se encargarán de sangrar y hacerlo legible.


Para simplificar, print_r() y var_dump() no pueden ser vencidos. Si quieres algo un poco más elegante o si estás tratando con listas grandes y / o datos profundamente anidados, Krumo te hará la vida mucho más fácil: te ofrece una pantalla de colapso / expansión muy bien formateada.


Recuerde establecer html_errors = on en php.ini para obtener una bonita impresión de var_dump () en combinación con xdebug.


Reuní algunas de estas opciones en una pequeña función auxiliar en

http://github.com/perchten/neat_html/

Puede imprimir en html, prolijamente emitido, así como también jsonificar la cadena, autoimprimir o devolver, etc.

Maneja el archivo incluye, objetos, matrices, nulos vs falso y similares.

También hay algunos ayudantes accesibles a nivel mundial (pero bien definidos) para cuando se usan configuraciones de una manera más similar al entorno

Más argumentos dinámicos, basados ​​en arreglos o cadenas opcionales.

Y, sigo añadiéndole Por lo tanto, es compatible: D


Si desea una mejor representación de cualquier variable de PHP (que solo texto simple), le sugiero que pruebe nice_r() ; imprime valores más información útil relevante (p. ej .: propiedades y métodos para objetos). Descargo de responsabilidad: Yo mismo escribí esto.


Si desea utilizar el resultado en otras funciones, puede obtener una expresión válida de PHP como una cadena usando var_export :

$something = array(1,2,3); $some_string = var_export($something, true);

Para muchas de las cosas que la gente está haciendo en sus preguntas, espero que hayan dedicado una función y no estén copiando el registro extra. var_export logra un resultado similar a var_dump en estas situaciones.



Si su servidor se opone a que cambie los encabezados (a texto plano) después de que se hayan enviado algunos, o si no desea cambiar su código, simplemente "ver el código fuente" desde su navegador: su editor de texto (incluso el bloc de notas) procesará nuevas líneas mejores que su navegador, y se convertirá en un desastre desordenado:

Matriz ([raíz] => 1 [sub1] => Matriz () [sub2] => Matriz () [sub3] => Matriz () [sub4] => Matriz () ...

en una representación adecuadamente tabulada:

[root] => 1 [sub1] => Array ( ) [sub2] => Array ( ) [sub3] => Array ( ) [sub4] => Array ( )...


Tanto print_r() como var_dump() generarán representaciones visuales de objetos dentro de PHP.

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


Una buena salida de color:

echo svar_dump (array ("a", "b" => "2", "c" => array ("d", "e" => array ("f", "g"))));

se verá así:

fuente:

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


una línea que le dará el equivalente aproximado de "fuente de visualización" para ver los contenidos de la matriz:

asume php 4.3.0+:

echo nl2br(str_replace('' '', '' '', print_r($_SERVER, true)));


<?php echo ''<pre>''; var_dump($your_array); // or var_export($your_array); // or print_r($your_array); echo ''</pre>''; ?>

O use bibliotecas externas como REF: https://github.com/digitalnature/php-ref


error_log(print_r($variable,true));

para enviar a syslog o registro de eventos para Windows