2014-01-22 5 views
14

So entfernen ich Steuerzeichen (Tab, cr, lf, \ v und alle anderen unsichtbaren Zeichen) auf der Clientseite (nach der Eingabe), aber da der Client nicht vertraut werden kann, habe ich um sie auch im Server zu entfernen.Entfernen von Steuerzeichen in utf-8 Zeichenfolge

so nach diesem Link http://www.utf8-chartable.de/

die Steuerzeichen von x00 bis 1F sind und von 7F bis 9F. so meine Client (Javascript) Steuer char Entfernungsfunktion ist:

return s.replace(/[\x00-\x1F\x7F-\x9F]/g, ""); 

und meine PHP (Server) Kontrolle char Entfernungsfunktion ist:

$s = preg_replace('/[\x00-\x1F\x7F-\x9F]/', '', $s); 

Nun scheint Probleme mit internationalem UTF8 chars so erstellen als ((xCF x82) nur in PHP (weil x82 innerhalb der zweiten Sequenzgruppe liegt), verursacht das Javascript-Äquivalent keine Probleme.

Jetzt ist meine Frage, sollte ich die Steuerzeichen von 7F zu 9F entfernen? Nach meinem Verständnis können die Sequenzen von 127 bis 159 (7F bis 9F) offensichtlich Teil einer gültigen UTF-8-Zeichenfolge sein?

auch, vielleicht sollte ich nicht einmal die 00 bis 31 Steuerzeichen filtern, weil auch einige dieser Zeichen in einigen seltsamen (japanisch? Chinesisch?), Aber gültigen utf-8 Zeichen erscheinen können?

+0

dies hilft Ihnen vielleicht: http://stackoverflow.com/q/12543476/1066234 Es ist eine andere Regex. –

Antwort

12

es scheint, dass ich die u Flagge auf der Regex hinzufügen müssen nur so wird es:

$s = preg_replace('/[\x00-\x1F\x7F-\x9F]/u', '', $s); 
Verwandte Themen