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