mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 20:26:56 -04:00
Add CSV delimiter Autodetection
Line 139 and Lines 162-173: Checks $csvfile for the most accurate delimiter ($bestDelimiter) Line 140: Sets the Delimiter for league/csv Reader
This commit is contained in:
parent
c122cfaa28
commit
b63b53e9d3
@ -136,6 +136,8 @@ class ImportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
$csv = Reader::createFromString($csvfile);
|
$csv = Reader::createFromString($csvfile);
|
||||||
|
$csvdelimiter = self::detectDelimiter($csvfile);
|
||||||
|
$csv->setDelimiter($csvdelimiter);
|
||||||
$stmt = new Statement();
|
$stmt = new Statement();
|
||||||
$data = iterator_to_array($stmt->process($csv));
|
$data = iterator_to_array($stmt->process($csv));
|
||||||
|
|
||||||
@ -156,4 +158,17 @@ class ImportController extends Controller
|
|||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function detectDelimiter($csvfile)
|
||||||
|
{
|
||||||
|
$delimiters = array(',', '.', ';');
|
||||||
|
$bestDelimiter = false;
|
||||||
|
$count = 0;
|
||||||
|
foreach ($delimiters as $delimiter)
|
||||||
|
if (substr_count($csvfile, $delimiter) > $count) {
|
||||||
|
$count = substr_count($csvfile, $delimiter);
|
||||||
|
$bestDelimiter = $delimiter;
|
||||||
|
}
|
||||||
|
return $bestDelimiter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user