Читать разделенный CSV табулятор с PHP - PullRequest
0 голосов
/ 18 июня 2019

Я не могу прочитать отдельный CSV-файл табулятора (и да, я знаю, что его CSV и нет TSV и C для табулятора ...) с PHP и отделить его правильно.Когда я выдаю свои импортированные данные с помощью echo или readfile, все табуляторы заменяются пробелом, и я не могу использовать пробел в качестве sperator.

На самом деле я немного запутался, что эта проблема не очень распространенакогда я использую Google, так что, возможно, у меня проблема ...

Проблема существует с XAMPP v3.2.3 и PHP версии 7.3.5

$tempFile = fopen($tempFilePath, "r");
        $uploadData = fread($tempFile, filesize($tempFilePath));
        fclose($tempFile);

        echo $uploadData;


        $uploadData =   str_replace('"','',$uploadData);    
        $uploadData = str_replace('\r\n','\n',$uploadData);
        $uploadData = str_replace('\r','\n',$uploadData);
        $uploadData = str_replace(';',',',$uploadData);
        $uploadData = str_replace('\t',',',$uploadData); //Here i'm trying to replace the tabulator with a colon to work with it afterwards

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы должны использовать функцию fgetcsv , которая уже имеет функциональность для чтения tsv.

Примерно так:

$uploadData = [];
if (($handle = fopen("test.csv", "r")) !== false) {
    while (($data = fgetcsv($handle, 0, "\t")) !== false) {
        $uploadData[] = $data;
    }
    fclose($handle);
}

Если вы хотите конвертировать tsv в csv, вы можетеиспользуйте обратную функцию fputcsv :

$fh = fopen('file.csv');
foreach ($uploadData as $datum) {
    fputcsv($fh, $datum);
}
fclose($fh);

Если вы хотите автоматически определять разделитель CSV, возможно эта статья может вам помочь.

0 голосов
/ 18 июня 2019

При чтении файла CSV на PHP лучше всего использовать функцию fgetcsv .С его помощью вы можете указать разделитель файла.Функция выведет строку файла.Ваш разделитель должен быть "\t".

...