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

PHP处理CSV:实现精准匹配行及无匹配单次提示

问题解决方案

1. 实现名称/CAS号的精确匹配

你的代码当前是把整行内容拼接后做模糊匹配,导致名称会匹配到其他列中包含该字符串的行。要实现精确匹配,需要分别针对**名称列(第0列)和CAS号列(第1列)**做严格比对,而非整行模糊搜索:

  • 针对名称:直接判断$row[0]是否与搜索关键词严格相等
  • 针对CAS号:直接判断$row[1]是否与搜索关键词严格相等

2. 无匹配时仅输出一次提示

设置一个布尔变量作为匹配标志,循环过程中若找到匹配项则将标志设为true,循环结束后再根据标志判断是否输出无匹配提示,避免在循环内反复输出提示内容。

完整修正代码

<?php
$ch = fopen("QHeTem2023.csv", "r");
$header_row = fgetcsv($ch);
$searchfor = "1H-Indazole";
$found = false; // 匹配状态标志

while($row = fgetcsv($ch)) {
    // 精确匹配名称列或CAS号列
    if ($row[0] === $searchfor || $row[1] === $searchfor) {
        echo '<div> CAS: ' . $row[1] . ' | ' . $row[2] . '</div>';
        $found = true; // 找到匹配,更新标志
    }
}

fclose($ch); // 释放文件资源

// 循环结束后统一处理无匹配场景
if (!$found) {
    echo "This reagent is not registered in our storage!";
}
?>

关键说明

  • 用严格相等判断===替代正则模糊匹配,确保只有名称或CAS号完全匹配的行才会被输出
  • 通过$found变量跟踪匹配状态,避免循环内重复输出无匹配提示
  • 补充fclose($ch)规范释放文件资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:56:10