Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用str_word_Count将数字作为单独的单词进行计数_Php_String_Word Count - Fatal编程技术网

在PHP中使用str_word_Count将数字作为单独的单词进行计数

在PHP中使用str_word_Count将数字作为单独的单词进行计数,php,string,word-count,Php,String,Word Count,我正在尝试使用str\u word\u count计算消息中的字数 $wordcount = str_word_count($message,0,'0123456789'); 我几乎可以保证里面只有单词、数字和空格。该消息是经过编码的语音到文本消息的结果 我正在努力解决的一件事是让它正确地返回正确的字数。我需要每个数字都算作它自己的单词。因此,“456”是3个单词,“456”也是3个单词。“四”是一个词,“四44”是三个词,等等 这个函数的第三个参数说,我应该能够通过指定作为单词的字符作为第三

我正在尝试使用
str\u word\u count
计算消息中的字数

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

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

我正在努力解决的一件事是让它正确地返回正确的字数。我需要每个数字都算作它自己的单词。因此,“456”是3个单词,“456”也是3个单词。“四”是一个词,“四44”是三个词,等等

这个函数的第三个参数说,我应该能够通过指定作为单词的字符作为第三个参数来实现这一点,我已经这样做了。然而,整个数字“块”仍然只算作一个字。我尝试在数字之间添加空格,但这在视觉上触发了Notepad++中的语法错误,基本上破坏了我的整个PHP页面

我曾考虑过过滤字符串中的数字,然后将其长度添加到字数中,但我肯定会重复计算一些数字。。。那真是一团糟


有没有什么方法可以让我用
str\u word\u count
本机实现这一点?

解决这一问题的一种方法是先将数字串拆分为单独的数字,然后再对单词进行计数。例如:

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

6

如果字符串为“我有一只鸡”,则此解决方案输出5,而它应该输出6。@parsonsbots在OPs问题中没有表明
1two3
是有效单词(它们提到单词、数字和空格,通常单词表示字母序列,而不是类似1two3的东西)。基于问题中未提及的可能场景,向下投票似乎有点苛刻。“该消息是经过编码的语音到文本消息的结果。”-1zero1可能是101在粗略的语音到文本编码中的可能输出,但我将删除向下投票(一旦取消每小时的限制)@parsonsbots我使用的STT没有做到这一点。我在主服务器上进行了预处理。是否有可能得到一个看起来像
1two3
?@Nick在我的情况下,没有。我不知道我希望发生什么,因为这不在标准中。输入是语音到文本转换的结果,因此无论如何获得“1two3”几乎是不可能的!
$message = 'Hello 012THREE4five6';
echo str_word_count(preg_replace('/[0-9]/', ' zzz ', $message));