обработка csv-файлов fgetcsv & STR getcsv?

У меня есть вопрос из трех частей fgetcsv лучше, чем str_getcsv и есть ли способ, чтобы разрешить только .типы файлов csv, которые будут отображаться в диалоговом окне загрузки файлов? Последний я / я должен использовать ini_set ('auto_detect_line_endings', true);

<?php
if (isset($_POST['submit'])) {
    //$filename=$_POST['filename'];
    $filename = file_get_contents($_FILES['uploadedfile']['tmp_name']);
    $handle = fopen("$filename", "r");
    while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {

        $import = "INSERT into kmmb_member1(no_ahli,no_pin,nama,no_ic_baru,no_ic_lama) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";
        mysql_query($import) or die(mysql_error());
    }
    fclose($handle);
    print "Import done";
} else {

    print "<form action='import.php' method='post'>";
    print "Type file name to import:<br />";
    // print "<input type='text' name='filename' size='20' /><br />";
    print "Select csv file: <input name='uploadedfile' type='file' /><br />";
    print "<input type='submit' name='submit' value='submit' /></form>";
}
?>

1 ответов


и fgetcsv() лучше, чем str_getcsv()?

да, при открытии из файла. Использовать str_getcsv() только когда у вас есть CSV уже как строка в вашей программе.

есть ли способ разрешить только .csv типы файлов, которые будут отображаться в диалоговом окне загрузка файла?

нет, если вы не используете Flash wrapper. Однако вы можете обнаружить расширение файла с помощью JavaScript, и вы должны принять только .csv С PHP (используйте pathinfo($filename, PATHINFO_EXTENSION)).

, убедившись, что она имеет .csv не подтверждает, что это на самом деле файл CSV.

должен ли я / должен ли я использовать ini_set('auto_detect_line_endings', true);

нет, если это не работает. документы государство есть небольшой штраф производительности в его использовании. Поэтому используйте его только тогда, когда это необходимо. Это также выкл по умолчанию. Лучше оставить менее распространенные вещи в php.ini по умолчанию у меня есть найдено.

хотя убедится magic_quotes и register_globals are всегда :)