Thomas Luethi: Werte aus Formulare formatieren

Beitrag lesen

Hallo,

Boese Zeichen entfernen: \0, grundsaetzlich alle
Zeichen unter dezimal 32.

Habe mir jetzt alles durchgelesen, nur zu obigem kann ich nichts finden und kann dem auch nicht folgen?! :(

Die ASCII-Zeichen 0 bis 31 sind Sonderzeichen (sogenannte
Steuerzeichen). Was sie bedeuten, siehe:
http://www.asciitable.com/ascii-full.gif

Ich weiss nicht, ob das Problem wirklich praxisrelevant ist
(z.B. ob man - und sei es auch nur mit speziell boeser
Software - ueberhaupt solche Zeichen via HTTP uebermitteln
kann), oder ob es ein rein theoretisches Problem ist.

Jedenfalls habe ich mal irgendwo gelesen, dass gewisse
Programme (z.B. sendmail) mit einem Null-Byte (d.h. ASCII 0)
aus der Fassung gebracht werden koennen, und dass man
das Nullbyte deshalb aus Strings entfernen sollte.

Das kann man z.B. mit str_replace() oder anderen String-Funktionen.
http://www.php.net/manual/de/function.str-replace.php
$sauberstring=str_replace("\0","",$schmutzigstring);

Diese Sonderzeichen bis Dezimal 31 kann man z.B. mit
mit chr() erzeugen der hexadezimalen oder oktalen
Schreibweise codieren.
Dezimal 13  = hexadezimal 0D = oktal 15
chr(13)       "\x0D"           "\15"

http://www.php.net/manual/de/language.types.string.php

Ich wuerde alle Zeichen von dezimal 0 bis 31 mit Ausnahme von
10 und 13 (Zeilenumbrueche) entfernen.

http://www.tiptom.ch/homepage/faq.html?q=zeilenumbruch

Gruesse,

Thomas

--
Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/