Multibyte-String in Zeichen zerlegen
Matze
- php
Hallo!
Ich möchte einen Multibyte String in ein Array zerlegen.
Zunächst fand ich str_split() perfekt bis ich einen String mit Umlauten probiert habe.
Bei dem String "tür" liefert mir str_split()
Array
(
[0] => t
[1] => Ã
[2] => ¼
[3] => r
)
Ich habe dann versucht das Problem zu lösen indem ich die interne Kodierung mit mb_internal_encoding("UTF-8")
auf UTF-8 stelle aber davon lies sich str_split() nicht beeindrucken.
Die Verwendung von preg_split() brachte mir dasselbe Ergebnis.
Gibt es eine Funktion mit der ich Strings mit Multibyte-Zeichen korrekt in ein Array zerlegen kann?
Grüße, Matze
Tach,
Ich habe dann versucht das Problem zu lösen indem ich die interne Kodierung mit
mb_internal_encoding("UTF-8")
auf UTF-8 stelle aber davon lies sich str_split() nicht beeindrucken.
natürlich nicht, dass beeinflußt nur die Multibyte-Stringfunktionen und deren Namen beginnen mit mb_, du suchst also mb_split.
mfg
Woodfighter
Hallo Woodfighter!
natürlich nicht, dass beeinflußt nur die Multibyte-Stringfunktionen und deren Namen beginnen mit mb_, du suchst also mb_split.
Ja klar, danke! Ich find es aber schon erstaunlich, dass mb_split() und str_split() nicht untereinander verlinkt sind.
Gruß, Matze
@@Matze:
nuqneH
Ja klar, danke! Ich find es aber schon erstaunlich, dass mb_split() und str_split() nicht untereinander verlinkt sind.
Ich finde es eher erstaunlich, dass so nutzlose Funktionen wie Stringoperationen, die nicht auf Zeichen, sondern auf Bytes arbeiten, überhaupt noch im Sprachumfang von PHP enthalten sind.
Qapla'
Hi!
Ich finde es eher erstaunlich, dass so nutzlose Funktionen wie Stringoperationen, die nicht auf Zeichen, sondern auf Bytes arbeiten, überhaupt noch im Sprachumfang von PHP enthalten sind.
PHP 6 ist noch nicht erschienen. Erst damit wird das Multibyte-Kodierungen-Problem richtig gelöst werden und nicht nur durch eine zusätzliche Extension ein Workaround angeboten.
Lo!
Hallo nochmal!
du suchst also mb_split.
Mh könntest du mir vielleicht nochmal helfen und sagen wie die RegExp dafür aussehen muss?
Ich dachte es geht mit mb_split('/./', 'tür');
aber da krieg ich als Ergebnis nur
Array
(
[0] => tür
)
Grüße, Matze
Hi,
Mh könntest du mir vielleicht nochmal helfen und sagen wie die RegExp dafür aussehen muss?
Ich dachte es geht mitmb_split('/./', 'tür');
aber da krieg ich als Ergebnis nur
Array
(
[0] => tür
)
http://www.php.net/manual/en/function.mb-split.php#80046
MfG ChrisB
Hallo ChrisB,
aber ich dachte genau dafür ist mb_split() da?
Oder wie arbeitet mb_split()?
Grüße, Matze
(Hallo|Hi(ho)|und Gute Nacht) Matze,
Ich möchte einen Multibyte String in ein Array zerlegen.
Zunächst fand ich str_split() perfekt bis ich einen String mit Umlauten probiert habe.
Ich habe dann versucht das Problem zu lösen indem ich die interne Kodierung mitmb_internal_encoding("UTF-8")
auf UTF-8 stelle aber davon lies sich str_split() nicht beeindrucken.
Gut, du möchtest also nicht mit einer beliebigen Multibyte-Kodierung, sondern nur mit UTF-8 arbeiten.
Die Verwendung von preg_split() brachte mir dasselbe Ergebnis.
Weil du preg_split() falsch angewandt hast ...
Gibt es eine Funktion mit der ich Strings mit Multibyte-Zeichen korrekt in ein Array zerlegen kann?
Für UTF-8 eignet sich preg_split() ganz gut:
$chars = preg_split('//u', $utf8encoded);
Man beachte das kleine "u" (für UTF-8-encoded)
und die Tatsache, dass zwischen den "Delimitern" nichts steht ("trenne zwischen den Zeichen").
Das ist der ganze Trick.
MffG(ähnen)
EisFuX