(PHP 4, PHP 5, PHP 7)
fgetcsv — Читает строку из файла и производит разбор данных CSV
$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($handle, 1000, ",")) !== 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);
}
?>