str_word_count()是否用于非拉丁词?

mr.*_*r.d 3 php count

我试图计算用非拉丁语言(保加利亚语)编写的变量中的单词数。但似乎str_word_count()并未计算非拉丁字。php文件的编码为UTF-8

$str = "????? ?? ????????";
echo 'Number of words: '.str_word_count($str);
//this returns 0
Run Code Online (Sandbox Code Playgroud)

Alm*_* Do 6

您可以使用正则表达式来做到这一点:

$str = "????? ?? ????????";
echo 'Number of words: '.count(preg_split('/\s+/', $str));
Run Code Online (Sandbox Code Playgroud)

在这里,我将单词定界符定义为空格字符。如果可能还有其他东西将被视为单词定界符,则需要将其添加到正则表达式中。

另外,请注意,由于在正则表达式中没有utf字符(不在字符串中),/u因此不需要修饰符。但是,如果您希望某些utf字符充当分隔符,则需要添加此regex修饰符。

更新

如果您只想用单词处理西里尔字母,则可以使用:

$str = "????? 
?? 12453
????????";
echo 'Number of words: '.count(preg_split('/[^?-??-???]+/u', $str));
Run Code Online (Sandbox Code Playgroud)