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/