使用 PHP 中的 str_word_count 将数字计算为单独的单词

Count digits as separate words using str_word_count in PHP

我正在尝试使用 str_word_count 来计算消息中的字数。

$wordcount = str_word_count($message,0,'0123456789');

我几乎可以保证那里只有单词、数字和空格。该消息是将语音编码为文本消息的结果。

我苦苦挣扎的一件事是让它正确 return 正确的字数。我需要将每个数字都算作自己的单词。因此“4 5 6”是 3 个词,“456”也是 3 个词。 "FOUR"是一个词,"FOUR 44"是3个词,等等

这个函数的 documentation 说我应该能够通过将字符指定为单词作为第三个参数来做到这一点,我已经做到了。但是,整 "block" 个数字仍然算作 个单词。我尝试在数字之间添加空格,但在 Notepad++ and 中视觉上触发了语法错误,基本上炸毁了我的整个 PHP 页面。

我考虑过过滤字符串中的数字,然后将其长度添加到字数中,但后来我确实重复计算了一些数字……这太麻烦了!

是否有 任何 方法可以让我用 str_word_count 本地完成此操作?

解决此问题的一种方法是先使用 preg_replace 将您的数字串拆分为单个数字,然后计算字数。例如:

$message = "I have 123 chickens";
$message = preg_replace('/\s*(\d)/', ' ', $message);
$wordcount = str_word_count($message, 0, '0123456789');
echo $wordcount;

输出

6

Demo on 3v4l.org

$message = 'Hello 012THREE4five6';
echo str_word_count(preg_replace('/[0-9]/', ' zzz ', $message));