2012-02-19 29 views
17

¿Hay alguna manera de ver caracteres invisibles como espacios en blanco, líneas nuevas y otros caracteres que no se imprimen de una manera como print_r()?PHP: ¿hay alguna manera de ver caracteres "invisibles" como n

Motivo es que hay algún tipo de personaje en mi matriz que no puedo ver y romper cosas.

Object Object 
(
    [name] => name 
    [numbers] => Array 
     (
      [0] => 123 

      [1] => 456 
      [2] => 789 
    ) 
    [action] => nothing 
) 

¿Ves el extraño espacio en blanco entre [0] y [1]? Al imprimir [0] también se imprime una nueva línea. Pero en ningún lugar le asigno una nueva línea a [0], así que estoy bastante confundido.

¿Hay una función incorporada en php que sea como show_invisible(Object->numbers[0]) y mostrará 123\n o similar?

+0

Ver la salida en un editor hexadecimal. Muchos buenos editores de texto tienen un modo hexadecimal. Sería demasiado problema, creo, convertirlo a hexadecimal en PHP solo para la depuración. No conozco ninguna función para mostrar los elementos no imprimibles de una manera legible por humanos –

Respuesta

1

Puede utilizar la función addcslashes:

addcslashes cadena (string $ cadena, string $ lista_caracteres)

que devolverá una cadena con barras diagonales inversas antes de los caracteres. Un ejemplo sería:

<?php 
echo addcslashes('foo[ ]', 'A..z'); 
// output: \f\o\o\[ \] 
// All upper and lower-case letters will be escaped 
// ... but so will the [\]^_` 
?> 
4

Probablemente podría enumerar todos los caracteres de control, pero intente esto para una solución rápida?

PHP - print string with control characters

Es un simple str_replace("\n",'\n',$string) tipo de solución, pero que probablemente se podría adaptar la solución para una devolución de llamada de función en la matriz para convertir esos caracteres.

2

Se podía ejecutar el script php, y el tubo directamente a hexdump -C

27

para ver todos los caracteres invisibles no sólo \r, \n etc ... Es bueno ver json_encode versión Ed y todo está claro:

$str = "..."; 
echo json_encode($str); 
1

Para tener una replicación exacta de la cadena de entrada, sin el entorno " y sin serialización, utilice este contenedor para json_encode():

substr(json_encode((string)$string), 1, -1) 

Realiza una fundición de cuerdas y elimina el " del estándar JSON.

Cuestiones relacionadas