Как исправить пустой вывод? PHP скрипт - PullRequest
0 голосов
/ 08 ноября 2019

Решил проблему: все, что мне нужно было сделать, это добавить разделитель в fgetcsv while (false !== ($data = fgetcsv($ih,10000,';')))

Мы получили файл от нашего поставщика. Файл содержит 60 тыс. Строк, и нам нужно каким-то образом автоматически его фильтровать.

В файле csv есть 3 столбца: SKU, Category, Price. Я отфильтровал этот файл с помощью 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-файл:

Пример данных примера

По сути, я хочу создать скрипт, который найдет все строки, содержащие текст «Инжектор» во втором столбце.

Также стоит упомянуть: оригинальный файл поставляется с точкой с запятой в качестве разделителя. Разделителем по умолчанию для окон является запятая.

1 Ответ

0 голосов
/ 08 ноября 2019

Если вы открыли файл в Excel, убедитесь, что .csv, если запятая, а не точка с запятой.

edit: вы можете проверить это, открыв файл в текстовом редакторе, таком как notepad / notepad ++.

...