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().(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::getCsvControl — Get the delimiter, enclosure and escape character for CSV
This function has been DEPRECATED as of PHP 8.6.0. Relying on this function is highly discouraged.
Gets the delimiter, enclosure and escape character used for parsing CSV fields.
У цієї функції немає параметрів.
Returns an indexed array containing the delimiter, enclosure and escape character.
| Версія | Опис |
|---|---|
| 8.6.0 | This method has been deprecated. |
| 7.4.0 | The escape character can now be an empty string. |
| 7.0.10 | Added the escape character to the returned array. |
Приклад #1 SplFileObject::getCsvControl() example
<?php
$file = new SplFileObject("data.txt");
print_r($file->getCsvControl());
?>Поданий вище приклад виведе щось схоже на:
Array
(
[0] => ,
[1] => "
[2] => \
)
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().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);
}