创建一个计算比str_word_count()
更多语言的单词的函数的正确方法是什么?具体来说,我需要支持中文,日文和韩文。
我认为会是这样的:
str_word_count()
并返回。有更好的方法吗?我可以想到我头脑中的一些缺陷:重音字符,使用空格分隔单词的多字节语言(例如阿拉伯语,我相信)。
答案 0 :(得分:3)
What about using ICU?通过intl扩展(类IntlBreakIterator)在PHP中进行接口。
这样的事情:
function utf8_word_count($string, $mode = 0) {
static $it = NULL;
if (is_null($it)) {
$it = IntlBreakIterator::createWordInstance(ini_get('intl.default_locale'));
}
$l = 0;
$it->setText($string);
$ret = $mode == 0 ? 0 : array();
if (IntlBreakIterator::DONE != ($u = $it->first())) {
do {
if (IntlBreakIterator::WORD_NONE != $it->getRuleStatus()) {
$mode == 0 ? ++$ret : $ret[] = substr($string, $l, $u - $l);
}
$l = $u;
} while (IntlBreakIterator::DONE != ($u = $it->next()));
}
return $ret;
}
(暗示启用了intl扩展,PHP> = 5.5.0)