2010-07-16 12 views
9

Sto prelevando il contenuto da un DB che è stato disinfettato utilizzando mysql_real_escape_string. Di conseguenza, i nuovi caratteri della riga ora appaiono come "\ n". Il problema è che questo contenuto è mostrato agli utenti all'interno di un prefisso < quindi non posso sostituire \ n con < br /> per esempio.sostituisci n con codice carattere attuale nuova riga

Suppongo di poter sostituire \ n con il codice di utf8 effettivo prima di inserire il risultato all'interno del pre> <.

Somoneone può assistere qui? Non usare mysql_real_escape_string non è davvero un'opzione a causa della politica di sicurezza.

Grazie.

+1

Sono un po 'perplesso, normalmente i dati devono essere restituiti senza caratteri di escape. Il modo in cui lo descrivi è come se i dati fossero passati attraverso mysql_real_escape_string() due volte prima di essere archiviati. –

+0

Sembra proprio che tu abbia sovrasviluppato i dati sfuggendoli due volte. Se metti in 'mysql_real_escape_string (" two \ nlines ");' ci sarà un vero carattere '\ n' nel database. Se si ottengono dati, non dovrebbe essere necessario sostituire '\ n' indietro. Se la mantieni così, aspettati anche problemi con "e" – mvds

+0

forse sei una vittima della ridicola funzionalità "magic_quote" in php - assicurati di disabilitarla, confonde solo chi è consapevole del concetto di escape – mvds

risposta

19
echo '<pre>'.str_replace('\n', "\n", $string).'</pre>'; 
+3

funzionerebbe come una "soluzione rapida". La causa principale sono i dati che sono stati sfuggiti due volte – Max

+0

Questo non ha funzionato fino a quando non ho usato le virgolette doppie "" \ n "" invece di virgolette singole ''\ n'' per qualche ragione. –

2
str_replace("\\n","\n",$data); 
-3

Questo potrebbe aiutare un po ':

echo ('test \ NTest'); mostra come

test test

ma echo ("test \ NTest"); mostra come

prova

prova

+1

echo (' test \ ntest '); dovrebbe apparire come test \ ntest –

1

sto tirando il contenuto da un DB che è stata sterilizzata tramite mysql_real_escape_string. Di conseguenza i caratteri di nuova riga appaiono ora come "\ n"

Se non hai fatto nulla per i dati grezzi tirato indietro dal database allora il ptoblem è che è stato 'sterilizzata' due volte quando inserito.

C.

1

perché no ...

echo str_replace('\\n', PHP_EOL, "few lines\nof text here,\nblah, blah! etc!"); 
Problemi correlati