2013-02-01 22 views
6

Questo è qualcosa che dovrebbe essere semplice ma non riesco a capire.Striscia di caratteri nascosti dalla stringa

Il sito in questione è codificato in UTF-8.

Un cliente ha riscontrato problemi nella compilazione di un modulo sul nostro sito Web. Ecco i dati di esempio che hanno inserito.

SPICER-SMITHS PERSO

Sembra una stringa regolare, ma quando si copia che stringa in un app come Notepad ++ vedrete un "?" appare nella parola "SMITHS" ("SMITH? S").

Lo script disinfetta il campo e compie il passaggio extra della rimozione dei seguenti caratteri: "\r\n", "\n", "\r", "\t", "\0", "\x0B".

Tuttavia, non sta catturando questo personaggio nascosto.

Qualcuno sa cosa sta succedendo qui?

MODIFICA: sto utilizzando php. Qui è la funzione che uso per disinfettare il campo:

function strip_hidden_chars($str) 
{ 
    $chars = array("\r\n", "\n", "\r", "\t", "\0", "\x0B"); 

    $str = str_replace($chars," ",$str); 

    return preg_replace('/\s+/',' ',$str); 
} 

EDIT 2: @thaJeztah mi ha portato alla risposta. La stringa che stavo testando era l'output dal nostro ticket di supporto dopo che il cliente l'aveva copiato e incollato da qualsiasi applicazione lei stesse usando. L'ingresso effettivo è stato

SPICER-SMITH

+0

Che linguaggio di scripting stai usando? Puoi includere il codice utilizzato per rimuovere i caratteri nascosti? – thaJeztah

+0

Grazie, ho modificato il mio post. –

+0

Ho scoperto che era questo personaggio http://www.fileformat.info/info/unicode/char/92/index.htm Non so proprio come spogliarlo. –

risposta

4

Puoi provare a dare un'occhiata qui; rimuovere i caratteri di controllo?

Remove control characters from php String

+0

Grazie per il ritrovamento. Ho provato alcune cose lì ma non funziona ancora. –

+0

Ho accettato la tua risposta perché mi ha portato a capire che stavo testando l'output invece di quello che era stato originariamente immesso. –

+1

@BillH puoi aggiornare la tua domanda e aggiungere le cose che hai fatto per risolverlo? Cercando di preservare la qualità di StackOverflow :) – thaJeztah

1

anche questo funziona così

$chars = array("\r\n", '\\n', '\\r', "\n", "\r", "\t", "\0", "\x0B"); 
str_replace($chars,"<br>",$data); 
Problemi correlati