SplFileObject::getCsvControl

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

SplFileObject::getCsvControlObtiene el carácter delimitador, el circundante y de escape para campos CSV

Descripción

public SplFileObject::getCsvControl(): array

Obtiene el carácter delimitador, el circundante y de escape usados para analizar campos CSV.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve un array indexado que contiene el carácter delimitador, el circundante y el de escape.

Historial de cambios

Versión Descripción
7.4.0 El carácter de escape puede ser ahora un string vacío.
7.0.10 Se añadió el carácter de escape al array devuelto.

Ejemplos

Ejemplo #1 Ejemplo de SplFileObject::getCsvControl()

<?php
$fichero
= new SplFileObject("datos.txt");
print_r($fichero->getCsvControl());
?>

El resultado del ejemplo sería algo similar a:

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

Ver también

add a note

User Contributed Notes 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
11 years ago
Seems that this function always returns the same delimiter.<?phpfile_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
3 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