2011-02-09 30 views
5

Ho una variabile php che contiene dati da un flusso IO (ad esempio, un file che ho appena letto). Questa stringa contiene un numero di caratteri speciali come \ n e \ t e così via. Devo essere in grado di stampare tutti questi caratteri sullo schermo in modo da poter esaminare visivamente la stringa. Presumo che ci sia un modo per sfuggirle, ma per la vita di me non riesco a capire come.Stampa caratteri speciali in php

+0

Appartiene a StackOverflow - anche guardare 'strreplace() funzione – Mchl

+2

' porre questa domanda a stackoverflow.com –

risposta

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

domanda Bene interessante. Non sono stato in grado di trovare nulla su Google riguardo l'escape di char newline.

Immagino che potresti provare a utilizzare nl2br, che converte le tue nuove righe in <br />, ma questo non è molto utile, dal momento che non saprai quando hai un tag di interruzione effettivo o un carattere di nuova riga.

Quindi, per superare questo, si consiglia due opzioni. Se si desidera solo per esaminare la stringa, utilizzare var_dump() o var_export()

Il seguente codice dà dà l'output 'text \\n':

$var = 'text \n'; 

var_export($var); 

Oppure, se si desidera lavorare ulteriormente con essa, è possibile utilizzare un pezzo di codice del genere, ma cerchiamo di essere onesti, questo è abbastanza disordinato ...

$var = 'text \n'; 

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

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

questo sarebbe uscita text [n]

0

credo che questo sia un domanda molto vecchia ma nessuna delle risposte è molto utile. Usiamo questa funzione per l'esame stringhe come questo, quindi speriamo che possiamo aiutare qualcun altro fuori:

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