Php str_word_count()表示非拉丁语单词?
我在计算用非拉丁语(保加利亚语)写的变量中的单词数。但是str_word_count()似乎不算非拉丁语单词。php文件的编码是UTF-8Php 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 = "текст на кирилица";
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
,只是为了记录在案,请不要增加多个问题。回答最好的一个,并将其余的标记为重复项。对不起,我不知道。将删除我的重复答案。