PHP 8.4.2 Released!

SplFileObject::setCsvControl

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

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

Описание

public 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-строку в массив
Добавить

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

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