我在我的网站上使用特殊符号,例如 å ä ö 来测量不同文本的长度。事实是,我注意到 PHP 将符号“唓䔓ö”每个视为 1 个单词。因此 åäö 算作 3 个单词,而 åäöåäöåäöåäöåäö 算作 15 个单词。嗯,这显然是不正确的,我在任何地方都找不到这个问题的答案。如果您能提供有用的答案,我将不胜感激,谢谢!
最佳答案
如果您需要考虑有限的单词字符集,只需将它们提供给 str_word_count
及其第三个参数 ( charlist
):
$charlist = 'åäö';
echo str_word_count('åäöåäöåäöåäöåäö', 0, $charlist); // 1
或者,您可以编写自己的 Unicode 就绪 str_word_count
函数。一种可能的方法是按非单词符号拆分源字符串,然后对结果数组进行计数:
function mb_str_word_count($str) {
return preg_match_all('#[\p{L}\p{N}][\p{L}\p{N}\'-]*#u', $str);
}
基本上,此函数计算目标字符串中以字母或数字字符开头的所有子字符串,后跟任意数量(包括零)的字母、数字、连字符和单引号符号(与 str_word_count()
中给出的描述匹配)文档)。
关于PHP: str_word_count(åäöåäöåäöåäö) 返回整数值 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27092606/