Файловая система
PHP Manual

fgetcsv

(PHP 4, PHP 5, PHP 7)

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

Описание

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

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

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

handle

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

length

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

Опускание этого параметра (или установка его в 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 полей в строке $data: <br /></p>\n";
        
$row++;
        for (
$c=0$c $num$c++) {
            echo 
$data[$c] . "<br />\n";
        }
    }
    
fclose($handle);
}
?>

Примечания

Замечание:

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

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


Файловая система
PHP Manual