str_word_count()用于非拉丁语单词?

时间:2014-04-11 14:35:59

标签: php count

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

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

4 个答案:

答案 0 :(得分:5)

您可以使用正则表达式执行此操作:

$str = "текст на кирилица";
echo 'Number of words: '.count(preg_split('/\s+/', $str));

这里我将单词分隔符定义为空格字符。如果可能有其他内容被视为单词分隔符,则您需要将其添加到正则表达式中。

另外,请注意,由于正则表达式中没有utf字符 (不在字符串中),因此不需要/u修饰符。但是如果你想要一些utf字符作为分隔符,你需要添加这个正则表达式修饰符。

更新

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

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

答案 1 :(得分:1)

以下是我想到的解决方案:

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

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

echo $i; // will return 5

答案 2 :(得分:0)

str_word_count description

中所述
  

'word'被定义为依赖于语言环境的字符串

在致电str_word_count

之前指定保加利亚语言区域
setlocale(LC_ALL, 'bg_BG');
echo str_word_count($content);

详细了解setlocale here

答案 3 :(得分:0)

found的最佳解决方案是为单词计数功能提供字符列表:

$text = 'текст на кирилице and on english too';
$count = str_word_count($text, 0, 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя');
echo $count; // => 7