Mediendeponie Rotating Header Image

November, 2012:

0x1F Steuerzeichen in PHP entfernen

VN:F [1.9.22_1171]
Rating: 5.0/5 (7 votes cast)

Neulich habe ich eine RSS-Schnittstelle für den Export von Daten eines CMS in eine Smartphone-App programmiert. Nichts schlimmes. Nichts großes. Alles gut.
Leider stellte sich vor wenigen Tagen heraus, daß der zuständige Redakteur seine Artikel aus der Textverarbeitungs-Software direkt in das CMS kopiert. Ist soweit ja auch noch in Ordnung. Problematisch ist aber, daß hierbei Steuerzeichen mit kopiert wurden, die in HTML und XML nicht angezeigt werden können (und dürfen), was dazu führte, daß der nun nicht mehr valide XML-Feed von verschiedenen Readern angemeckert wurde.
Scheinbar ist weder das CMS (aus Basis von Contao) noch der WYSIWYG-Editor (TinyMCE) willens, das Steuerzeichen 0x1F (vermutlich auch weitere Steuerzeichen) herauszufiltern.
Blöde Sache.

Zu zweit haben wir uns eine ganze weilen den Kopf zerbrochen und ordentlich herum gegoogelt. Offenkundig gab es keine einfache Lösung.
Nachdem der wenig freundliche Entwickler der App, der “einfach nur einen Validen Stream, egal in welcher Form” wollte, mit dem base64-encodeten Steuerzeichen dann auf seiner Seite alles andere als glücklich wurde (“Unser CMS kann das nicht!!11elf1”) haben wir beschlossen, der Sache mal ordentlich auf den Grund zu gehen und das Problem zu lösen.
Mein werter Kollege war es nun, der mit am nächsten Tag eine Lösung präsentierte, die so elegant ist, daß ich sie der Welt nicht vorenthalten möchte:

Steuerzeichen aus einem String entfernen mit PHP geht nämlich in nur einer Zeile:

$text = preg_replace(“/[[:cntrl:]]/i”, “”, $text);

Geil, oder? 🙂
Also, ich hoffe, das hier finden ein paar Menschen, die das Problem in Zukunft sicherlich haben werden, bei Google & Co.
Bitte bookmarkt & teilt diese Seite und gebt dem Beitrag ein paar Sternchen, auf daß nicht jeder 2 Tage braucht, bis er oder sie über die Lösung stolpert! 😉

so long…

VN:F [1.9.22_1171]
Rating: 5.0/5 (7 votes cast)