我正在尝试使用str_word_count
来计算消息中的单词数。
$wordcount = str_word_count($message,0,'0123456789');
我几乎可以保证里面只有单词,数字和空格。该消息是语音编码为文本消息的结果。
我正在努力解决的一件事是使其正确返回正确数量的单词。我需要将每个数字都算作自己的单词。因此,“ 4 5 6”是3个单词,“ 456”也是3个单词。 “四个”是一个字,“四个44”是三个字,依此类推。
此功能的documentation说,我应该能够通过指定要算作单词的字符作为第三个参数来做到这一点。但是,整个数字“块”仍算作仅个单词。我试图在数字之间添加空格,但是这在视觉上触发了Notepad ++ 中的语法错误,并且基本上炸毁了我的整个PHP页面。
我考虑过要过滤字符串中的数字,然后将其长度添加到字数统计中,但是我肯定会对某些数字进行重复计数……这太乱了!
我可以用str_word_count
以本机方式做到这一点吗?
答案 0 :(得分:3)
解决此问题的一种方法是先使用preg_replace
将数字字符串拆分为单个数字,然后对单词计数。例如:
$message = "I have 123 chickens";
$message = preg_replace('/\s*(\d)/', ' $1', $message);
$wordcount = str_word_count($message, 0, '0123456789');
echo $wordcount;
输出
6
答案 1 :(得分:1)
$message = 'Hello 012THREE4five6';
echo str_word_count(preg_replace('/[0-9]/', ' zzz ', $message));