SplFileObject::getCsvControl

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

SplFileObject::getCsvControlGet the delimiter, enclosure and escape character for CSV

Açıklama

public SplFileObject::getCsvControl(): array

Gets the delimiter, enclosure and escape character used for parsing CSV fields.

Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

Dönen Değerler

Returns an indexed array containing the delimiter, enclosure and escape character.

Sürüm Bilgisi

Sürüm: Açıklama
7.4.0 The escape character can now be an empty string.
7.0.10 Added the escape character to the returned array.

Örnekler

Örnek 1 SplFileObject::getCsvControl() example

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

Yukarıdaki örnek şuna benzer bir çıktı üretir:

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

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
23
greg dot bowler at g105b dot com
9 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.

<?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
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