2011-02-09 61 views
5

Tengo una variable php que contiene datos de una secuencia IO (por ejemplo, un archivo que acabo de leer). Esta cadena contiene una serie de caracteres especiales como \ n y \ t, etc. Necesito poder imprimir todos estos caracteres en la pantalla para poder examinar la cadena visualmente. Supongo que hay alguna forma de escapar de ellos, pero por mi vida no puedo entender cómo.Imprimir caracteres especiales en php

+0

Pertenece a stackoverflow - también mirar a 'strreplace()' función – Mchl

+2

hacer esta pregunta en stackoverflow.com –

Respuesta

2
addcslashes("test\n", "\0..\37\177..\377") 
0

Muy interesante pregunta. No he podido encontrar nada en Google sobre cómo escapar de Newline Char.

Supongo que podría intentar usar nl2br, que convertiría sus nuevas líneas en <br />, pero eso no es muy útil, ya que no sabrá cuándo tiene una etiqueta de corte real o un carácter de nueva línea.

Por lo tanto, para pasar esto, le recomiendo dos opciones. Si sólo desea examinar la cadena, utilice var_dump() o var_export()

El siguiente código da da la salida 'text \\n':

$var = 'text \n'; 

var_export($var); 

O, si se quiere trabajar más con él, se puede utilizar una pieza de código así, pero seamos honestos, esto es bastante complicado ...

$var = 'text \n'; 

$search = array('\n', '\r', '\r\n'); 
$replace = array('[n]', '[r]', '[r][n]'); 

echo str_replace($search, $replace, $var); 

esto haría salida text [n]

0

creo que esto es una pregunta muy antigua, pero ninguna de las respuestas es muy útil. Utilizamos esta función para examinar las cadenas de este tipo, así que espero que podamos ayudar a alguien más:

function convert_non_visual_ascii_chars_to_representation($string) { 
    $non_vis_chars = [ 
     0 => 'NUL', 
     1 => 'SOH', 
     2 => 'STX', 
     3 => 'ETX', 
     4 => 'EOT', 
     5 => 'ENQ', 
     6 => 'ACK', 
     7 => 'BEL', 
     8 => 'BS', 
     9 => 'TAB', 
     10 => 'LF', 
     11 => 'VT', 
     12 => 'FF', 
     13 => 'CR', 
     14 => 'SO', 
     15 => 'SI', 
     16 => 'DLE', 
     17 => 'DC1', 
     18 => 'DC2', 
     19 => 'DC3', 
     20 => 'DC4', 
     21 => 'NAK', 
     22 => 'SYN', 
     23 => 'ETB', 
     24 => 'CAN', 
     25 => 'EM', 
     26 => 'SUB', 
     27 => 'ESC', 
     28 => 'FS', 
     29 => 'GS', 
     30 => 'RS', 
     31 => 'US', 
    ]; 

    // Convert the string 
    $new_string = ''; 
    $length = strlen($string); 
    for ($i = 0; $i < $length; $i++) { 
     $char_code = ord($string[$i]); 
     if (isset($non_vis_chars[$char_code])) { 
      $new_string = $new_string . '[' . $non_vis_chars[$char_code] . '/' . $char_code . ']'; 
     } else { 
      $new_string = $new_string . $string[$i]; 
     } 
    } 

    return $new_string; 
}