解决了该问题:
我要做的就是向fgetcsv添加分隔符
while (false !== ($data = fgetcsv($ih,10000,';')))
我们从供应商处收到文件。该文件有6万行,我们需要以某种方式自动过滤该文件。
csv文件包含3列:SKU,类别,价格。 我已经使用excel过滤了此文件,并且看到该文件仅需要700种产品。它们都具有相同的“注射器”类别
我已经写了一个php脚本,但是它给了我空白的输出。有人可以解释我的代码有什么问题吗?
<?php header('Content-type: text/plain; charset=utf-8');
$input = 'C:\Users\Administrator\Desktop\Data.csv';
$output = 'C:\Users\Administrator\Desktop\Data_changed.csv';
$myfile = fopen("C:\Users\Administrator\Desktop\data_log.txt","w") or die("Something wrong with this file.");
$vname='The process was successful: '.date('Y-m-d').' day';
fwrite($myfile,$vname);
fclose($myfile);
$injector = "Injector";
if (false !== ($ih = fopen($input,'r'))) {
$oh = fopen($output,'w');
while (false !== ($data = fgetcsv($ih))) {
if (strpos($data[1],$injector) !== false) {
// this is where you build your new row
$outputData = array($data[0],$data[1],$data[2]);
fputcsv($oh,$outputData);
}
}
fclose($ih);
fclose($oh);
}
?>
预期输出为700种经过过滤的产品。
csv文件的外观如下:
基本上,我想要做的是一个脚本,该脚本查找第二列中包含文本“ Injector”的所有行。
还要提及:原始文件带有分号作为分隔符。 Windows的默认分隔符是逗号。