处理csv文件fgetcsv&str_getcsv?
问题描述:
我有一个三部分的问题是fgetcsv好于str_getcsv有没有办法只允许.csv文件类型显示在文件上传对话框?最后应该/我需要使用ini_set('auto_detect_line_endings',true);处理csv文件fgetcsv&str_getcsv?
<?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>";
}
?>
答
是
fgetcsv()
比str_getcsv()
更好?
是的,从文件打开时。只有当您的程序中已经有CSV字符串时才使用str_getcsv()
。
有没有办法只允许
.csv
文件类型显示在文件上传对话框?
不,除非您使用Flash wrapper。但是,您可以使用JavaScript检测文件扩展名,并且您必须必须只接受.csv
与PHP(使用pathinfo($filename, PATHINFO_EXTENSION)
)。
但是,确保它有.csv
不会确认它实际上是一个CSV文件。
如果我/我需要使用
ini_set('auto_detect_line_endings', true);
没有,除非它不工作。 The docs状态在使用它时会有小的性能损失。所以只有在需要时才使用它。它也是默认关闭。最好将php.ini
中不太常见的东西留给它们的默认值,我发现了。
虽然确保magic_quotes
和register_globals
是始终关闭 :)