如何修改PHP的Wordcounter函数以支持指定长度筛选统计?
修改后的Wordcounter函数实现
要满足wordcounter($maxLength, $string)的调用需求,同时正确统计长度小于指定值的单词数量,我们可以对原函数做以下调整:
核心改动说明
- 调整参数顺序:将
$maxLength作为第一个入参,$string作为第二个,匹配要求的调用格式 - 替换固定判断阈值:把原代码中硬编码的
4改为传入的$maxLength,实现动态长度判断 - 增加边界处理:解决连续空格导致的空元素问题,同时验证参数合法性避免报错
修改后的完整代码
function wordcounter($maxLength, $string){ // 参数合法性校验 if (!is_int($maxLength) || !is_string($string)) { return 0; } // 分割字符串为单词数组,跳过空元素 $words = explode(" ", $string); $count = 0; foreach ($words as $word){ $trimmedWord = trim($word); // 跳过空字符串,避免连续空格的干扰 if (empty($trimmedWord)) { continue; } // 判断单词长度是否小于指定阈值 if (strlen($trimmedWord) < $maxLength) { $count++; } } return $count; } // 测试示例:调用wordcounter(3, "this is an example") 返回1 echo wordcounter(3, "this is an example"); // 输出1 // 原字符串测试:统计长度小于5的单词数 $originalString = "Voor de vormgeving is het handig om te weten hoe het eruit komt te zien voordat je daadwerkelijk tekst gaat plaatsen."; echo wordcounter(5, $originalString);
进阶优化(处理标点符号)
如果需要更精准的单词识别(比如忽略单词末尾的标点),可以用正则表达式分割字符串,替代explode():
// 用正则分割,提取仅包含字母数字的单词,自动过滤标点和多余空格 $words = preg_split('/\W+/', $string, -1, PREG_SPLIT_NO_EMPTY);
这样像"plaatsen."这类带标点的单词会被处理成"plaatsen",长度统计更准确。
内容的提问来源于stack exchange,提问作者meAndme
相关产品推荐
相关产品推荐

