регулярное выражение разрывая китайскую строку - PullRequest
2 голосов
/ 30 июля 2010

Когда я запускаю этот код и аналогичные китайские символы, символ ni (你) (возможно, другие) разбивается и ломается.

$sample = "你不喜欢 香蕉 吗";
$parts = preg_split("/[\s,]+/", $sample);
var_dump($parts);

//outputs
array(4) {
  [0]=>
  string(2) "�"
  [1]=>
  string(9) "不喜欢"
  [2]=>
  string(6) "香蕉"
  [3]=>
  string(3) "吗"
}

//in 我觉得 你很 麻烦
//out
array(4) {
  [0]=>
  string(9) "我觉得"
  [1]=>
  string(2) "�"
  [2]=>
  string(3) "很"
  [3]=>
  string(6) "麻烦"
}

Правильно ли мое регулярное выражение?

Ответы [ 2 ]

6 голосов
/ 30 июля 2010

Если ваша строка в UTF-8, вы должны использовать модификатор u:

$sample = "你不喜欢 香蕉 吗";
$parts = preg_split("/[\\s,]+/u", $sample);
var_dump($parts);

Если он в другой кодировке, см. ответ единорога .

0 голосов
/ 30 июля 2010

Поскольку входная строка многобайтовая, я думаю, вам придется использовать mb_split вместо preg_split.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...