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

PHP统计长度8-10且首字母为S的单词数及CSV处理方案问询

普通TXT文件统计实现

你需要在拆分单词后,逐个判断是否符合过滤条件,再累加符合条件的数量,而非直接累加所有单词总数。修改后的代码如下:

<?php  
$count = 0;  
$file = fopen("data.txt", "r");  

while (($line = fgets($file)) !== false) {  
    // 按空格拆分单词
    $words = explode(" ", $line);
    foreach ($words as $word) {
        // 去除单词两端的空白、标点符号,避免干扰统计
        $cleanWord = trim($word, " \t\n\r\0\x0B.,!?;:\"'()[]{}");
        // 跳过清洗后为空的无效值
        if (empty($cleanWord)) continue;
        // 两个过滤条件判断:长度8-10、首字母为S
        // 如需不区分大小写匹配s开头,可改成strtoupper($cleanWord)[0] == 'S'
        $len = strlen($cleanWord);
        if ($len >=8 && $len <=10 && substr($cleanWord, 0, 1) == 'S') {
            $count++;
        }
    }
}  

echo "符合条件的单词数量:" . $count;  
fclose($file);  
?>

核心逻辑说明:

  • 用strlen()获取单词字符长度,判断是否处于8到10的闭区间内
  • 用substr($cleanWord, 0, 1)提取单词首字符,和目标字符'S'比较完成匹配
CSV文件统计实现

CSV属于结构化文件,需要先解析每行的字段内容,再提取单词做统计,核心过滤逻辑和TXT文件完全一致,只需要调整文件读取逻辑即可,代码如下:

<?php
$count = 0;
// 打开CSV文件,如果你的CSV有自定义分隔符、包裹符,可在fgetcsv参数中调整
$file = fopen("data.csv", "r");

while (($row = fgetcsv($file)) !== false) {
    // 遍历CSV每行的所有字段
    foreach ($row as $fieldContent) {
        // 拆分单个字段内容为单词
        $words = explode(" ", $fieldContent);
        foreach ($words as $word) {
            $cleanWord = trim($word, " \t\n\r\0\x0B.,!?;:\"'()[]{}");
            if (empty($cleanWord)) continue;
            $len = strlen($cleanWord);
            if ($len >=8 && $len <=10 && substr($cleanWord, 0, 1) == 'S') {
                $count++;
            }
        }
    }
}

echo "CSV文件中符合条件的单词数量:" . $count;
fclose($file);
?>

内容的提问来源于stack exchange,提问作者Praff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:24:03