Php str_word_count()表示非拉丁语单词?

Php str_word_count()表示非拉丁语单词?,php,count,Php,Count,我在计算用非拉丁语(保加利亚语)写的变量中的单词数。但是str_word_count()似乎不算非拉丁语单词。php文件的编码是UTF-8 $str = "текст на кирилица"; echo 'Number of words: '.str_word_count($str); //this returns 0 您可以使用regex执行此操作: $str = "текст на кирилица"; echo 'Number of words: '.count(preg_split(

我在计算用非拉丁语(保加利亚语)写的变量中的单词数。但是str_word_count()似乎不算非拉丁语单词。php文件的编码是UTF-8

$str = "текст на кирилица";
echo 'Number of words: '.str_word_count($str);
//this returns 0

您可以使用regex执行此操作:

$str = "текст на кирилица";
echo 'Number of words: '.count(preg_split('/\s+/', $str));
这里我将单词分隔符定义为空格字符。如果有其他东西将被视为单词分隔符,则需要将其添加到正则表达式中

另外,请注意,由于正则表达式(不是字符串)中没有utf字符,所以不需要使用
/u
修饰符。但如果您想让一些utf字符充当分隔符,则需要添加此正则表达式修饰符

更新:

如果您只想在文字中处理西里尔字母,您可以使用:

$str = "текст 
на 12453
кирилица";
echo 'Number of words: '.count(preg_split('/[^А-Яа-яЁё]+/u', $str));

我想到了一个解决方案:

$var = "текст на кирилица с пет думи";
$array = explode(" ", $var);

$i = 0;
foreach($array as $item) 
    {
    if(strlen($item) > 2) $i++ ;
    }

echo $i; // will return 5

str\u word\u count

“word”定义为与区域设置相关的字符串

在调用
str\u word\u count

setlocale(LC_ALL, 'bg_BG');
echo str_word_count($content);
阅读有关
setlocale

的更多信息我的最佳解决方案是为单词计数功能提供一个字符列表:

$text='tааааааааааааааа;
$count=strаU wordаU count($text,0,'АБааааааааааааааааааааааааааааа;
echo$count;//=>7.

这很有趣,我只是在Ruby的
irb
中尝试了一下,看看它对非西方输入的作用,还使用了
split
length
:-)顺便说一句。发布一个答案,然后@mvw OP可以选择。;-)好吧,正则表达式在逻辑上是正确的,
explode()
不是因为单词之间可能有多个分隔符,但它也计算单词的1个字母,并且每行加+1。有什么办法解决这个问题吗?@Fred ii-
str=“Сааааааа\nfoo\nbar”
然后
str.split(/[:space:]/).count
,只是为了记录在案,请不要增加多个问题。回答最好的一个,并将其余的标记为重复项。对不起,我不知道。将删除我的重复答案。