我试图计算用非拉丁语言(保加利亚语)编写的变量中的单词数。但似乎 str_word_count() 没有计算非拉丁单词。 php文件的编码是UTF-8
$str = "текст на кирилица";
echo 'Number of words: '.str_word_count($str);
//this returns 0
您可以使用正则表达式来做到这一点:
$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_word_count
'word' 被定义为依赖于语言环境的字符串致电前指定保加利亚语言环境
str_word_count
setlocale(LC_ALL, 'bg_BG');
echo str_word_count($content);
阅读更多关于
setlocale
$text = 'текст на кирилице and on english too';
$count = str_word_count($text, 0, 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя');
echo $count; // => 7
$str = "текст на кирилица";
'Number of words: '.str_word_count(transliterator_transliterate('Any-Latin; Latin-ASCII;', $str));
//this returns 3