Читает строку из файла и производит разбор данных CSV


(PHP 4, PHP 5)

fgetcsvЧитает строку из файла и производит разбор данных CSV

Описание

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]]] )

Данная функция похожа на функцию fgets(), с той разницей, что она производит анализ строки на наличие записей в формате CSV и возвращает найденные поля в качестве массива.

Список параметров

handle

Корректный файловый указатель на файл, успешно открытый при помощи fopen(), popen() или fsockopen().

length

Должен быть больше самой длинной строки (в символах), найденной в CSV-файле (включая завершающий символ конца строки). Данный параметр стал необязательным в PHP 5. Если этот аргумент не указан (или равен 0 в версиях PHP 5.1.0 и выше), максимальная длина строки не ограничена, но функция работает немного медленнее.

delimiter

Необязательный параметр delimiter устанавливает разделитель поля (только один символ).

enclosure

Необязательный параметр enclosure устанавливает символ ограничителя поля (только один символ).

escape

Необязательный параметр escape устанавливает экранирующий символ (только один символ).

Возвращаемые значения

Возвращает индексированный массив с прочтенными полями.

Замечание:

Пустая строка CSV-файла будет возвращена в качестве массива, содержащего единственный элемент null, ошибки в данном случае не возникнет.

Замечание: Если у вас возникают проблемы с распознаванием PHP концов строк при чтении или создании файлов на Macintosh-совместимом компьютере, включение опции auto_detect_line_endings может помочь решить проблему.

fgetcsv() возвращает NULL, если передаётся неверный параметр handle или FALSE при других ошибках, в том числе и по достижению конца файла.

Список изменений

Версия Описание
5.3.0 Добавлен параметр escape
5.1.0 Параметр length стал необязательным. По умолчанию равен 0, что означет отсутсвие ограничения длины.
4.3.5 fgetcsv() теперь безопасна для обработки бинарных данных

Примеры

Пример #1 Чтение и вывод на экран содержимого CSV-файла

<?php
$row 
1;
if ((
$handle fopen("test.csv""r")) !== FALSE) {
    while ((
$data fgetcsv($handle1000",")) !== FALSE) {
        
$num count($data);
        echo 
"<p> $num полей в строке $row: <br /></p>\n";
        
$row++;
        for (
$c=0$c $num$c++) {
            echo 
$data[$c] . "<br />\n";
        }
    }
    
fclose($handle);
}
?>

Примечания

Замечание:

Эта функция принимает во внимание настройки локали. К примеру, если LANG установлена в en_US.UTF-8, то файлы в однобайтовой кодировке будут неправильно прочитаны этой функцией.

Смотрите также

  • str_getcsv() - Выполняет разбор CSV-строки в массив
  • explode() - Разбивает строку с помощью разделителя
  • file() - Читает содержимое файла и помещает его в массив
  • pack() - Упаковывает данные в бинарную строку
  • fputcsv() - Форматирует строку в виде CSV и записывает её в файловый указатель