3

私は次のようにpreg_splitを使用してphpの文字列から単語を取得しようとしています:

$result = preg_split('/[^A-Za-z]+/', $text)

しかし、これは機能しません、いくつかの単語が分割されています、私は何が間違っているのですか?

編集:実際には、ロシア語のテキスト="фываывафыфываф"では機能しません。

$result = preg_split('/[^А-яа-я]+/', $text)
4

2 に答える 2

10

[^A-Za-z]ASCII文字のみが考慮されます。Unicodeの非文字で分割する必要があります。

$result = preg_split('/\P{L}+/u', $subject);

[^А-Яа-я]+Unicode文字セットでは、А(0x0410)が最初のキリル文字ではなく、я(0x044F)が最後の文字ではないため、どちらも機能しません。これらの栄誉はЁ(0x0401)とӹ(0x04F9)に行くようです。私はロシア語をまったく知らないので、なぜそうなのか推測できません。

これは、文字コード表プログラムを使用して簡単に確認できます。

スクリーンショットcharmap

于 2012-11-11T06:46:25.040 に答える
0
$str ="As sdf fdasf";
$result = preg_split('/[\b ]/', $str);

編集:

$result = preg_split('/\b\s+/', $str); //this is not for Unicode 
于 2012-11-11T06:49:20.923 に答える