$file = new SplFileObject('D:\BackUp\addressbook.csv');
print_r($file->getCsvControl());
То, что я пытаюсь сделать, это найти разделитель файла CSV, используя php. файл addressbook.csv выглядит так
"id";"firstname";"lastname";"phone";"email""1";"jishan";"ishrak";"17878";"[email protected]"
а другой файл — addressbook1.csv, который похож на
"id","firstname","lastname","phone","email""1","jishan","ishrak","17878","[email protected]"
один разделен «,» и другой с «;» но функция
getCsvControl()
всегда возвращает массив как
Array ( [0] => , [1] => " )
Я имею в виду в индексе [0] он всегда дает «,» для обоих файлов
Есть ли способ решить эту проблему.
Это не ошибка. SplFileObject::getCsvControl()
никогда не предназначен для обнаружения разделителя из файла CSV. Он возвращает только контрольные символы по умолчанию или тот, который был предварительно установлен с SplFileObject::setCsvControl()
, И этот набор управляющих символов CSV используется, если в SplFileObject::fgetcsv()
метод.
Ладно, это плохо документировано, но это были мои первые мысли, что метод никогда не обнаружит символы, и просмотр исходного кода php подтвердил это.
Вероятно, это ошибка?
как вы можете видеть здесь php doc 1-й комментарий 1 год назад — Seems that this function always returns the same delimiter.
ОБНОВИТЬ
это не ошибка смотреть на Pazi ツ
ответ.