fgetcsv

(PHP 4, PHP 5, PHP 7)

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

Описание

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

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

Замечание:

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

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

handle

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

length

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

Отсутствие этого параметра (или установка его в 0 в PHP 5.1.0 и выше) приведет к тому, что длина строки будет неограничена. Это может сказаться на скорости выполнения.

delimiter

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

enclosure

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

escape

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

Замечание: Обычно символ enclosure экранируется внутри поля путем его удваивания; однако, символ escape в качестве альтернативы. Поэтому значения по умолчанию этих параметров "" и \" имеют одинаковое значение. Помимо разрешения экранировать символ enclosure символ escape не имеет особого смысла; он даже не предназначен для самого экранирования.

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

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

Замечание:

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

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

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

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

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

Примеры

Пример #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);
}
?>

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

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