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().SplFileObject::getCsvControl
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::getCsvControl — Get the delimiter, enclosure and escape character for CSV
Description
Gets the delimiter, enclosure and escape character used for parsing CSV fields.
Parameters
This function has no parameters.
Return Values
Returns an indexed array containing the delimiter, enclosure and escape character.
Changelog
| Version | Description |
|---|---|
| 7.4.0 | The escape character can now be an empty string. |
| 7.0.10 | Added the escape character to the returned array. |
Examples
Example #1 SplFileObject::getCsvControl() example
<?php
$file = new SplFileObject("data.txt");
print_r($file->getCsvControl());
?>The above example will output something similar to:
Array
(
[0] => ,
[1] => "
[2] => \
)
See Also
- SplFileObject::setCsvControl() - Set the delimiter, enclosure and escape character for CSV
- SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields
- SplFileObject::fputcsv() - Write a field array as a CSV line
- fputcsv() - Format line as CSV and write to file pointer
- fgetcsv() - Gets line from file pointer and parse for CSV fields
- str_getcsv() - Parse a CSV string into an array
+add a note
User Contributed Notes 3 notes
greg dot bowler at g105b dot com ¶
11 years ago
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);
}