molily: Eleminierung von HTML-Fehlern

Beitrag lesen

Hallo,

$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);

gehört denn "U+009f" hin, damit es ersetzt wird und wieso soll es denn durch "nichts" ersetzt werden, anscheinend gehört doch an die Stelle korrekterweise ein Umlaut stattdessen

U+009F ist ein Steuerzeichen, kein Umlaut.
http://www.fileformat.info/info/unicode/char/9f/index.htm
Es ergibt Sinn, das durch nichts zu ersetzen, also komplett zu verwerfen.

In obiger RegExp wird der Bereich 0x80 bis 0xFF angegeben (Zahlen in Hexadezimalschreibweise):

[\x80-\xFF]

0x9F liegt in diesem Zahlenbereich.

Übrigens ist hier der RegExp-Modifier /…/u wichtig. Das behandelt die Eingabe als UTF-8. Ich vermute, dann wird die 0xXX-Notation als Unicode-Codepoint verstanden?! Ansonsten würde es ja Multibyte-Zeichen zerstören. Ich habe es nicht ausprobiert. Gegebenenfalls würde ich auf die \uXXXX-Notation ausweichen, die sich unmissverständlich auf Unicode-Codepoints und nicht auf Bytes bezieht.

Wenn da tatsächlich ein Umlaut hingehört, dann ist irgendetwas kaputt. Entweder du liest den Feed mit einer falschen Kodierung ein, oder es geht etwas bei der Verarbeitung schief. Welche Kodierung nutzt der NDR und mit welcher verarbeitest du den String?

Mathias