使用 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
$message = 'Hello 012THREE4five6';
echo str_word_count(preg_replace('/[0-9]/', ' zzz ', $message));
我正在尝试使用 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
$message = 'Hello 012THREE4five6';
echo str_word_count(preg_replace('/[0-9]/', ' zzz ', $message));