我需要这样的utf-8文字:
“Bára,takterámáhezkéoči。to je,alenepříčetněnehorázné!”
分成单词和标点符号,如下所示:
Array (
[0] => Bára
[1] => ,
[2] => ta
[3] => která
[4] => má
[5] => hezké
[6] => oči
[7] => .
[8] => To
[9] => je
[10] => ,
[11] => ale
...
)
我在这里尝试了一些例子,但是没有在utf8文本上工作(在á上分割文本,或者ě)。
答案 0 :(得分:1)
取自php.net comment(稍加修改):
function mb_str_split( $string ) {
$split = preg_split('/\b([\(\).,\-\',:!\?;"\{\}\[\]„“»«‘\r\n]*)/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
return array_filter($split, 'filter');
}
function filter($val) {
if (trim($val) != '') {
return trim($val);
}
return false;
}
测试:
print_r(mb_str_split("Bára, ta která má hezké oči. To je, ale nepříčetně nehorázné!"));
/*
Array
(
[0] => Bára
[1] => ,
[3] => ta
[5] => která
[7] => má
[9] => hezké
[11] => oči
[12] => .
[14] => To
[16] => je
[17] => ,
[19] => ale
[21] => nepříčetně
[23] => nehorázné
[24] => !
)
*/
答案 1 :(得分:1)
这个怎么样:
$string = 'Bára, ta která má hezké oči. To je, ale nepříčetně nehorázné!';
$rawSplit = preg_split('/\b/u', $string, 0, PREG_SPLIT_NO_EMPTY);
$result = array_filter( array_map( function($el) {
return trim($el);
}, $rawSplit));