kymbrik
11/20/2017 - 1:43 PM

getCsvDelimeter

Usage: getFileDelimiter($_FILES['upload']['tmp_name'])

function getFileDelimiter($file, $checkLines = 2){
    $file = new SplFileObject($file);
    $delimiters = array(
        ',',
        '\t',
        ';',
        '|',
        ':'
    );
    $results = array();
    $i = 0;
    while($file->valid() && $i <= $checkLines){
        $line = $file->fgets();
        foreach ($delimiters as $delimiter){
            $regExp = '/['.$delimiter.']/';
            $fields = preg_split($regExp, $line);
            if(count($fields) > 1){
                if(!empty($results[$delimiter])){
                    $results[$delimiter]++;
                } else {
                    $results[$delimiter] = 1;
                }
            }
        }
        $i++;
    }
    $results = array_keys($results, max($results));
    return $results[0];
}