You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:15:41