为什么php函数str_word_count()从js等效返回不同的计数?

Eur*_*ser 6 javascript php string

我有这个JS代码,我认为它等同于PHP str_word_count()函数,但它们仍然返回不同的单词计数.

我的JS代码:

//element f9 value  is:
"Yes, for all people asking ? ? ? their selfs Have you ever dreamed to 
visite World Travel Market 2015 ? we can confirm that now it is a great
 time to go to London for World Travel Market 2015Yes, for all people 
asking their selfs Have you ever dreamed to visite World Travel Market 2015 ? 
we can confirm that now it is a great time to go to London for World 
Travel Market 2015Yes, for all people asking their selfs Have you ever 
dreamed to visite World Travel Market 2015 ? we can confirm that now it is
 a great time to go to London for World 2015Yes, for all people asking
 their selfs Have you ever dreamed to visite World 2015 we can confirm that 
now it is a great time to go to London for World Travel Market 2015Yes, for 
all people asking their selfs Have you ever dreamed to visite World Travel 
Market 2015 ? we can confirm that now it is a great time to go to London 
for World 2015Yes, for all people asking their selfs Have you ever dreamed 
to visite World Travel Market 2015 ? we can confirm that now it is a great 
time to go to London for World Travel Market 2015Yes, for all people asking 
their selfs Have you ever dreamed to visite World 2015 we can confirm that 
now it is a great time to go to London for World 2015Yes, for all people 
asking their selfs Have you ever dreamed to visite World Travel Market 
2015 ? we can confirm that now it is a great time to go to London for World 
2015Yes, for all people asking their selfs Have you ever dreamed to visite 
World 2015 ? we can confirm that now it is a great time to go to London for 
World 2015"


var words = document.getElementById("f9").value.replace(/([(\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g, '');
words = words.replace(/(^\s*)|(\s*$)/gi,"");
words = words.replace(/[ ]{2,}/gi," ");
words = words.replace(/\n /,"\n");
words = words.split(' ').length;
Run Code Online (Sandbox Code Playgroud)

产出:300

我的PHP代码:

str_word_count("Yes, for all people asking ? ? ? their selfs Have you ever dreamed to 
visite World Travel Market 2015 ? we can confirm that now it is a great
 time to go to London for World Travel Market 2015Yes, for all people 
asking their selfs Have you ever dreamed to visite World Travel Market 2015 ? 
we can confirm that now it is a great time to go to London for World 
Travel Market 2015Yes, for all people asking their selfs Have you ever 
dreamed to visite World Travel Market 2015 ? we can confirm that now it is
 a great time to go to London for World 2015Yes, for all people asking
 their selfs Have you ever dreamed to visite World 2015 we can confirm that 
now it is a great time to go to London for World Travel Market 2015Yes, for 
all people asking their selfs Have you ever dreamed to visite World Travel 
Market 2015 ? we can confirm that now it is a great time to go to London 
for World 2015Yes, for all people asking their selfs Have you ever dreamed 
to visite World Travel Market 2015 ? we can confirm that now it is a great 
time to go to London for World Travel Market 2015Yes, for all people asking 
their selfs Have you ever dreamed to visite World 2015 we can confirm that 
now it is a great time to go to London for World 2015Yes, for all people 
asking their selfs Have you ever dreamed to visite World Travel Market 
2015 ? we can confirm that now it is a great time to go to London for World 
2015Yes, for all people asking their selfs Have you ever dreamed to visite 
World 2015 ? we can confirm that now it is a great time to go to London for 
World 2015") 
Run Code Online (Sandbox Code Playgroud)

产出:290

什么PHP str_word_count()不算作单词,我的JS代码呢?你也可以建议改变什么,这样我可以得到JS和PHP代码的相同数量?

Ren*_*rss 4

正如str_word_count的 PHP 手册所说:

出于此函数的目的,“word”被定义为包含字母字符的依赖于语言环境的字符串,该字符串也可以包含字符 和 ,但不能以'字符开头-。

所以整数不被算作单词。您出现了十次被2015空格包围的情况。如果紧随其后的是字母,它仍然会计算它们,例如:2015Yes。

您可能想阅读这个问题来计算 PHP 中的数字。

或者

删除JS中的数字。

words = words.replace(/[0-9]/gi,"");
Run Code Online (Sandbox Code Playgroud)

正如@Rizier123指出的,你可以看到所有的单词:

print_r(str_word_count($string, 1));
Run Code Online (Sandbox Code Playgroud)