PHP Velho Oeste 2024

SplFileObject::getCsvControl

(PHP 5 >= 5.2.0, PHP 7)

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

설명

public array SplFileObject::getCsvControl ( void )

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

인수

이 함수는 인수가 없습니다.

반환값

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

변경점

버전 설명
5.6.25, 7.0.10 Added the escape character to the returned array.

예제

Example #1 SplFileObject::getCsvControl() example

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

위 예제의 출력 예시:

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

참고

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
10 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
2 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