Sto utilizzando la regex seguente per rimuovere i caratteri di controllo non stampabili dall'input dell'utente prima di inserire i valori nel database.preg_replace per rimuovere caratteri non stampabili sembra rimuovere anche tutti i caratteri stranieri
preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $value)
C'è un problema con l'utilizzo di questo sulle stringhe utf-8? Sembra rimuovere completamente tutti i caratteri non ascii.
Lascia dei caratteri validi al di fuori dell'intervallo ASCII, come i caratteri diactrici polacchi (come ąęćśńżź)? Sto cercando un'espressione regolare che rimuova le sequenze UTF-8 non valide (quindi MySQL non si lamenterà mentre inserisce una stringa di questo tipo nel database), ma lascia intatto tutto il resto. – pako
Penso che per quello dovresti usare ''/ \ P {Any}/u'' -' Any' dovrebbe essere auto-esplicativo, e '\ P {}' (maiuscolo) è la forma negata di '\ p {} '. Ma sarei più interessato a come quelle sequenze di byte non valide sono arrivate lì in primo luogo. –