PHP:str_word_count减去一个单独的单词

问题描述

<?php
echo str_word_count(' - - - - - - - ');exit;

单词数为7,但没有单词。如何使此功能正常工作?

解决方法

如评论中所述,str_word_count的行为可能很奇怪。

这里是使用简单的正则表达式来计算字数的另一种方法:

function count_words(string $string): int
{
  return preg_match_all('/\b(?:[^\W\d_]|-)+\b/u',$string,$matches) 
    ? count($matches[0]) 
    : 0;
}

echo count_words(' - - - - - - - '),PHP_EOL;  // 0
echo count_words('hello world'),PHP_EOL;      // 2
echo count_words('hoho hé-hé haha'),PHP_EOL;  // 3 
echo count_words('hello 123'),PHP_EOL;        // 1

Demo

当发现一系列字母时,这只是计算字符串的每次出现:

  • [^\W\d_]基本上表示您可以在单词中找到的除连字符以外的任何字符,
  • u标志可确保将带重音符号的字符考虑在内。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...