• Как автоматически определить разделитель CSV и кодировку?

    blrik
    @blrik
    Музыкант
    Нашёл на сайте
    function getSplitChar($str) {
    	$s = preg_replace('/".+"/isU', '*', $str); 
    	$a = [',',';','|']; //список разделителей
    	$r;
    	$i = -1;
    	foreach($a as $c) {
    		if(($n = sizeof(explode($c, $s))) > $i) {
    			$i = $n;
    			$r = $c;
    		}
    	}
    	return $r;
    }
    
    //открываем файл
    $handle = fopen("test.csv", "r");
    $header = fgets($handle);
    $char = getSplitChar($header);
    //переходим назад к первой строке
    fseek($header, 0);
    
    while (($data = fgetcsv($handle, 1000, $char)) !== FALSE) {
        $num = count($data);
        echo "
     $num полей в строке $row: 
    
    \n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "
    \n";
        }
    }
    fclose($handle);
    Ответ написан
    Комментировать