Как определить разделитель во временном файле?

CSV-файл загружен и сохранен как файл .tmp в папке сервера / tmp. Возникла проблема с получением ее разделителя. Это может быть либо ‘;’ или же ‘,’. Как я могу проверить это из файла .tmp? Как я понимаю, это не может быть сделано с файлом tmp, поэтому мне нужно сохранить его как .csv, а затем проверить разделитель. Это единственный способ сделать это?

0

Решение

Вместо того, чтобы заново изобретать колесо, повторно используйте существующий пакет хорошо написанного, хорошо проверенного кода … такого как «CSV» от Лига Чрезвычайных Пакетов. Мало того, что CSV имеет много преимуществ для работы с файлами CSV, он имеет функцию для определения того, какой разделитель используется в файле CSV. Например:

use League\Csv\Reader;
$reader = Reader::createFromPath('/path/to/your/csv/file.csv');
$reader->setEnclosure('"');
$reader->setEscape('\\');
$delimiters_list = $reader->fetchDelimitersOccurrence([',',';','|'], 10);

При этом будут просмотрены первые 10 строк файла .csv и подсчитано количество найденных разделителей. Если $delimiters_list является [','=>40, ';'=>0, '|'=>0] тогда вы знаете, что это файл CSV, который последовательно используется , как его разделитель.

Другие пакеты CSV можно найти ВОТ в Packagist.org.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]