In php Unicode-Leerzeichen „NO-BREAK SPACE“ bzw. „\u00a0“ in String trimmen
In einem php-Plugin für Textpattern, in dem RSS-Feeds geparsed werden, ließen sich einige Leerzeichen partout nicht mit einem einfachen trim($string);
beseitigen.
Nach einigen frustierten Stunden Fehlersuche, durch einen Tipp darauf gekommen, dem String mittels echo json_encode($string);
auf den Zahn zu fühlen und siehe da, es wurde ein NO-BREAK SPACE bzw. ein \u00a0
zu Tage gefördert, das von @trim@ ohne Angabe von characters
nicht erfasst wird. Dieser lässt sich sich dann aber mittels untenstehender Funktion bereinigen. Dort sind sowohl die standardmäßigen " \n\r\t\v\0"
enthalten, als auch chr(0xC2).chr(0xA0)
. Der Tipp kam von Stackoverflow.
function trim_string ($value) {
return trim($value, chr(0xC2).chr(0xA0)." \n\r\t\0\v");;
};
Damit lassen sich dann normale Strings per $text = trim_string($text);
oder auch ganze Arrays mittels $ary = array_map('trim_string', $ary);
von allen unnötigen Leerzeichen säubern.
Stichworte: Php, String, Trim, Unicode
Kategorien: Programmierung
Kommentare
Keine Kommentare
Kommentare