Linuxspicker

Admins kleiner Zettelkasten für die Lösung von Linuxproblemen

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: , , ,
Kategorien:


Kommentare

Keine Kommentare

Kommentare

Geben Sie Ihren Kommentar hier ein. * Eingabe erforderlich. Sie müssen die Vorschau vor dem Absenden ansehen.