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 и записывает её в файловый указатель