PHP 8.6.0 Beta 1 is available for testing

SplFileObject::setCsvControl

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

SplFileObject::setCsvControlУстанавливает символы разделителя, ограничителя и экранирования для CSV-полей

Описание

public function SplFileObject::setCsvControl(string $separator = ",", string $enclosure = "\"", string $escape = "\\"): void

Метод устанавливает символы разделителя полей, ограничителя значений полей и экранирования для разбора CSV-полей.

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

separator

Параметр separator устанавливает символ-разделитель полей и принимает только один однобайтовый символ.

enclosure

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

escape

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

Внимание

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

Внимание

Начиная с PHP 8.4.0 полагаться на значение по умолчанию, которое содержит параметр escape, не рекомендуют. Значение потребуется указать явно, позиционно или как именованный аргумент.

Внимание

Строка в CSV-формате иногда перестаёт соответствовать стандарту » RFC 4180 или не выдерживает обмена информацией с PHP-функциями для работы с CSV-строками, если для символа экранирования escape устанавливают значение, которое отличается от пустой строки "". Значение по умолчанию для параметра escape"\\", поэтому рекомендуют явно указывать пустую строку. Значение по умолчанию изменят в будущей версии PHP, но не раньше PHP 9.0.

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

Функция не возвращает значения после выполнения.

Ошибки

Функция выбрасывает ошибку ValueError , если аргументы для разделителя полей separator или ограничителя значений enclosure содержат значение короче одного байта.

Функция выбрасывает ошибку ValueError , если длина значения аргумента escape не равна одному байту или передали пустую строку.

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

Версия Описание
8.4.0 Вызов функции без явной передачи значения в параметр escape устарел.
7.4.0 Параметр escape теперь принимает пустую строку для отключения внутреннего механизма экранирования.

Примеры

Пример #1 Пример установки символов разделителя, ограничителя и экранирования методом SplFileObject::setCsvControl()

<?php
$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl('|');
foreach ($file as $row) {
 list ($fruit, $quantity) = $row;
 // Обрабатываем значения
}
?>

Содержимое файла data.csv

<?php
apples|20
bananas|14
cherries|87
?>

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

  • SplFileObject::getCsvControl() - Получает символы разделителя, ограничителя и экранирования CSV-полей
  • SplFileObject::fgetcsv() - Получает строку из файлового указателя и разбирает по CSV-полям
  • SplFileObject::fputcsv() - Записывает массив полей как CSV-строки
  • fputcsv() - Формирует строку в CSV-формате и записывает строку в файловый указатель
  • fgetcsv() - Получает строку из файлового указателя и разбирает по CSV-полям
  • str_getcsv() - Разбирает CSV-строку в массив

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /