解决了该问题:
我要做的就是向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的默认分隔符是逗号。
答案 0 :(得分:0)
如果在Excel中打开文件,请确保.csv(如果用逗号分隔而不是用分号分隔)。
编辑:您可以通过在文本编辑器(例如notepad / notepad ++)中打开文件来进行检查。