2013-02-28 15 views
5

Masz problem z preg split i utf. Jest to kod:PHP preg_split utf8 znaków

$original['words'] = preg_split("/[\s]+/", $original['text']); 
print_r($original); 

to jest odpowiedź:

Array 
(

    [text] => Šios baterijos kaista 
    [words] => Array 
     (
      [0] => � 
      [1] => ios 
      [2] => baterijos 
      [3] => kaista 

Ten kod jest runiczny w CakePHP ramy. Zauważ, że [tekst] wyświetla się poprawnie przed słowami i jest pomijany w postępie podzielonym. Przy okazji, próbowałem użyć tych:

mb_internal_encoding('UTF-8'); 
mb_regex_encoding('UTF-8'); 
ini_set('default_charset','utf-8'); 

Nic nie pomogło. Dziękuję Ci.

+0

próbowałeś http://php.net/manual/en/function.mb-split.php? –

Odpowiedz

8

Musisz włączyć tryb UTF-8 dla preg_split dodając umodifier do wyrażenia regularnego:

preg_split("/[\s]+/u", $original['text']); 

dyrektyw konfiguracji można wymienić jako część próbuje znaleźć rozwiązanie nie odgrywają żadnej roli tutaj.