(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::setCsvControl — Устанавливает символы разделителя, ограничителя и экранирования для CSV-полей
$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 ?>
