Ich habe (in einer SQLite-Datenbank) die folgende Zeichenfolge:PHP: Ist es möglich, eine UTF-8-Zeichenfolge korrekt SUBSTR?
Лампа в вытяжке на кухне меняется, начиная с вытаскивания белого штырька справа.
Die Zeichenfolge richtig von PHP print
gezeigt. Ich möchte nur die ersten 50 Zeichen dieser Saite erhalten, d. H.
Лампа в вытяжке на кухне меняется, начиная с вытас
.
Ich habe versucht, sowohl die substr mit und mb_substr und
Лампа в вытяжке на кухне ме�
, das heißt nur 28 Zeichen erhalten.
Nachdem ich hier und anderswo über die Probleme von mbstring gelesen habe, merke ich, dass dies tatsächlich eine 50-Byte-Zeichenfolge (22 russische Zeichen = 44 Bytes plus 5 Leerzeichen plus 1 Fragezeichen) ist.
Gibt es eine nette Lösung? Alle meine Strings sind UTF-8, also könnte ich natürlich selbst eine Teilstr-Funktion programmieren, indem ich das erste Bit jedes Bytes etc. überprüfe. Aber das hätte vorher sicher geschehen sollen, oder?
UPDATE: Ich glaube, mb_substr
funktioniert nicht richtig, weil mb_detect_encoding()
does not work properly.
Sie sagen, dass Sie "mb_substr" versucht haben, aber haben Sie versucht, die Codierung zu spezifizieren? Funktioniert 'mb_substr ($ string, 0, 10," UTF-8 ")' zum Beispiel? – h2ooooooo
Stellen Sie sicher, dass Sie die richtige Kodierung an 'mb_substr' übergeben -' mb_substr ($ input, 0, 50, 'UTF-8') 'funktioniert für mich,' mb_substr ($ input, 0, 50) 'nicht. – DCoder
@ h2ooooooo: Ich habe nicht, ich habe es im Handbuch verpasst. Und es tut es. Bitte füge deinen Kommentar als Antwort hinzu, ich akzeptiere es. – texnic