fgetcsv
(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 может принимать пустую строку для
отключения проприетарного механизма экранирования.
|
Примеры
Пример #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);
}
?>
Смотрите также
- str_getcsv() - Выполняет разбор CSV-строки в массив
- explode() - Разбивает строку с помощью разделителя
- file() - Читает содержимое файла и помещает его в массив
- pack() - Упаковать данные в бинарную строку
- fputcsv() - Форматирует строку в виде CSV и записывает её в файловый указатель