$str = "I want to eat我要吃飯 , you?你呢?";
我想要输出:
array(
0 => I,
1 => want,
2 => to,
3 => eat,
4 => 我,
5 => 要,
6 => 吃,
... ...
);
我试过了:
function mb_str_split($str, $length = 1) {
if ($length < 1) return FALSE;
$result = array();
for ($i = 0; $i < mb_strlen($str); $i += $length) {
$result[] = mb_substr($str, $i, $length);
}
return $result;
}
var_dump(mb_str_split($str, 3));
上述方法仅适用于所有字符串均为繁体中文的情况。
preg_match("/\p{Han}+/u", $str, $matches);
上面的方法只返回中文的第一个字符串,这是我要吃饭。如何得到所有(我要吃饭,你呢)?
全部使用UTF8。
如何实现我想要的输出?
答案 0 :(得分:0)
修改的
从这段代码摘录中,你可能“只是”需要弄清楚如何保存英文单词:
<?php
$words = "I want to eat我要吃飯 , you ? 你呢 ?";
$tokens = preg_split('/(?<!^)(?!$)/u', $words);
print_r($tokens);
// Array
// (
// [0] => I
// [1] => w
// [2] => a
// [3] => n
// [4] => t
// [5] => t
// [6] => o
// [7] => e
// [8] => a
// [9] => t
// [10] => 我
// [11] => 要
// [12] => 吃
// [13] => 飯
// [14] => ,
// [15] => y
// [16] => o
// [17] => u
// [18] => ?
// [19] => 你
// [20] => 呢
// [21] => ?
// )
修改的
这个解决方案是否足够令人满意?
$words = explode(' ', "I want to eat 我要吃飯 , you ? 你呢 ?");
$output = array();
foreach ($words as $word) {
$tokens = mb_split('\s', $word, 1);
$output = array_merge($output, $tokens);
}
print_r($output);
// Array
// (
// [0] => I
// [1] => want
// [2] => to
// [3] => eat
// [4] => 我要吃飯
// [5] => ,
// [6] => you
// [7] => ?
// [8] => 你呢
// [9] => ?
// )