Frage

Normalerweise würde ich das einfach tun.

$str = preg_replace('#(\d+)#', ' $1 ', $str);

Wenn ich wüsste, dass es UTF-8 sein würde, würde ich dem Muster einen Kleinbuchstaben "U" -Modifikator hinzufügen und ich denke, ich wäre gut. Aufgrund der Berichte von UTF-8 2x und in einigen Fällen 3x den Speicherplatz als wenn der native Charakter-Set verwendet würde, versuche ich, die Anwendung nicht auf UTF-8 einzuschränken.

Daher versuche ich, mich von meinen Lieblingsfunktionen von Preg_ fernzuhalten.

Die meisten Dinge waren bisher ziemlich einfach, aber ich stecke ein wenig an Ersatz, bei denen ich normalerweise Zeichenklassen in PREG_ wie " d" verwenden würde.

War es hilfreich?

Lösung

Implementieren Sie eine Speicherwrapper mit mb_convert_encoding Innen müssen Sie also nur UTF-8 manipulieren.

(Ich denke immer noch, dass du es sollst erfordern UTF-8 und sparen Sie allen großen Ärger.)

Andere Tipps

Ich denke, dass die UTF-8-Codierung so ist, dass alles in der codierten Ausgabe mit einem Bytewert von 127 oder weniger immer der ASCII-Zeichen ist, der mit diesem Byte-Wert angepasst ist und niemals Teil einer Multi-Byte-Sequenz ist. Sie können also weiterhin so tun, als ob die Codierung in dieser Situation ASCII ist und keine Probleme verursachen (wie Räume und Ziffern sind alle ASCII).

Siehe die Beschreibung in http://en.wikipedia.org/wiki/utf-8 wo es zeigt, dass alle Bytes in einer Multibyte -Sequenz das bedeutendste Bit -Set haben (z. B. sind alle> 127).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top