私は次のようにpreg_splitを使用してphpの文字列から単語を取得しようとしています:
$result = preg_split('/[^A-Za-z]+/', $text)
しかし、これは機能しません、いくつかの単語が分割されています、私は何が間違っているのですか?
編集:実際には、ロシア語のテキスト="фываывафыфываф"では機能しません。
$result = preg_split('/[^А-яа-я]+/', $text)
[^A-Za-z]
ASCII文字のみが考慮されます。Unicodeの非文字で分割する必要があります。
$result = preg_split('/\P{L}+/u', $subject);
[^А-Яа-я]+
Unicode文字セットでは、А
(0x0410)が最初のキリル文字ではなく、я
(0x044F)が最後の文字ではないため、どちらも機能しません。これらの栄誉はЁ
(0x0401)とӹ
(0x04F9)に行くようです。私はロシア語をまったく知らないので、なぜそうなのか推測できません。
これは、文字コード表プログラムを使用して簡単に確認できます。
$str ="As sdf fdasf";
$result = preg_split('/[\b ]/', $str);
編集:
$result = preg_split('/\b\s+/', $str); //this is not for Unicode