我试图计算用非拉丁语(保加利亚语)写的变量中的单词数。但似乎str_word_count()不计算非拉丁语。 php文件的编码是UTF-8
$str = "текст на кирилица";
echo 'Number of words: '.str_word_count($str);
//this returns 0
答案 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