提问人:Thiago 提问时间:2/10/2023 更新时间:2/10/2023 访问量:27
仅显示完全匹配的行(CSV 与 PHP),并且在不匹配的情况下仅循环一次消息
Showing only the rows for the exact match (CSV with PHP) and having a message just once for a while loop in case of no match
问:
我有一个包含三列(名称、CAS 编号和存储)的 CSV 文件,如此处所示的 CSV 文件。我一直在尝试搜索特定的试剂名称或 CAS 编号,并且只显示第 1 行和第 2 行。它正在工作,但是当搜索也是其他试剂名称一部分的名称时,它会显示所有匹配项,而不是仅显示确切搜索单词的特定结果。
例如,在搜索“1H-吲唑”时,显示为:
CAS: 271-44-3 |Rotavap 机柜,隔间 AM-134
CAS: 40598-94-5 |冷冻室 - 小烧瓶,隔间 AM-176
CAS:53857-57-1 |Rotavap 机柜,隔间 AM-177
我只想看到第一个“CAS:271-44-3 |Rotavap 柜,隔间 AM-134“,用于”1H-吲唑”。对于“$searchfor = ”271-44-3“;”,它就像一个魅力!
$ch = fopen("QHeTem2023.csv", "r");
$header_row = fgetcsv($ch);
$searchfor = "1H-Indazole";
$pattern = preg_quote($searchfor, '/');
$pattern = "/^.*$pattern.*$/mi";
while($row = fgetcsv($ch)) {
if (preg_match($pattern, implode('', $row))) {
echo '\<div\> CAS: '.$row\[1\].' | '.$row\[2\].'\</div\>';
}
}
此外,如果未找到匹配项,我想回声“该试剂未在我们的存储中注册!如果 else {echo “message”;} 放在 while 循环中,则会出现多个消息实例。
我该如何解决这些问题?
答: 暂无答案
评论
1H-Indazole
3-Bromo-1H-indazole
1H-Indazole
semicolon-space
in_array