我有一个三部分问题是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>";
}
?>
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 11
是
fgetcsv()不是更好str_getcsv()?
是的,从文件打开时.使用str_getcsv()只有当你有CSV已经在你的程序中的字符串.
有没有办法只允许
.csv文件类型显示在文件上传对话框中?
不,除非您使用Flash包装器.但是,您可以使用JavaScript检测文件扩展名,并且必须仅接受.csvPHP(使用pathinfo($filename, PATHINFO_EXTENSION)).
但是,确保它.csv不会确认它实际上是CSV文件.
我应该/我需要使用
ini_set('auto_detect_line_endings', true);
不,除非它不起作用.文档声明使用它会有很小的性能损失.所以只在需要时才使用它.它默认也是关闭的.php.ini我发现,最好将不太常见的东西留给他们的默认值.
虽然确保magic_quotes和register_globals是始终关闭 :)