PHP 8.5.0 Released!

SplFileObject::getCsvControl

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

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

Описание

public SplFileObject::getCsvControl(): array

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

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

Сигнатура функции не содержит параметров.

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

Метод возвращает индексный массив, который содержит символы разделителя, ограничителя и экранирования.

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

Версия Описание
7.4.0 Пустую строку теперь разрешается использовать как символ экранирования.
7.0.10 В массив с результатами добавили символ экранирования.

Примеры

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

<?php

$file
= new SplFileObject("data.txt");
print_r($file->getCsvControl());

?>

Вывод приведённого примера будет похож на:

Array
(
    [0] => ,
    [1] => "
    [2] => \
)

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

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

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

up
23
greg dot bowler at g105b dot com
10 years ago
Note that this function does not magically guess the CSV control from a given file, rather it returns what has been priorly set with SplFileObject::setCsvControl().
up
1
Anonymous
12 years ago
Seems that this function always returns the same delimiter.

<?php
file_put_contents("A;B;C;D\n0;0;0;0", "test.txt");

$file = new SplFileObject("test.txt"); 
var_dump($file->getCsvControl());
?>

array(2) {
  [0]=>
  string(1) ","
  [1]=>
  string(1) """
}
up
0
faure dot daniel dot 57 at gmail dot com
4 years ago
Given an absolute path to a CSV or any text file and a list of possible delimiters and assuming lines are up to 4096 characters long, I use

<?php 
function guess_delimiter($file, $delimiters=[',',';']) 
{
  $h = fopen($file,'r');
    $count = [];
    foreach ($delimiters as $del) {
      $count[$del] = 0;
      while (($bufer = fgets($h, 4096)) !== false) {
        $count[$del]+=substr_count($bufer, $del);
      }
      rewind($h);
    }
    fclose($h);
    return array_search(max($count), $count);
}
To Top