csv — getCsvControl () всегда возвращает один и тот же разделитель

    $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] он всегда дает «,» для обоих файлов
Есть ли способ решить эту проблему.

0

Решение

Это не ошибка. SplFileObject::getCsvControl() никогда не предназначен для обнаружения разделителя из файла CSV. Он возвращает только контрольные символы по умолчанию или тот, который был предварительно установлен с SplFileObject::setCsvControl(), И этот набор управляющих символов CSV используется, если в SplFileObject::fgetcsv() метод.

Ладно, это плохо документировано, но это были мои первые мысли, что метод никогда не обнаружит символы, и просмотр исходного кода php подтвердил это.

0

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

Вероятно, это ошибка?
как вы можете видеть здесь php doc 1-й комментарий 1 год назад — Seems that this function always returns the same delimiter.

ОБНОВИТЬ
это не ошибка смотреть на Pazi ツ ответ.

0

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