这是错误的,当我从csv文件中回显一行并将任何内容连接到行的末尾时,它不会显示,而是所有行都被回显,并且连接的字符串仅显示在最后一次,这是某种缓冲的东西,不会让我从我的csv文件串起来的东西,它在我的本地wamp服务器上运行,我在我的expload函数中尝试了不同的行分隔符,我确定文件只在行的末尾使用\ n
我试图逐行解析一个csv文件,这样我就可以在使用它构建一个sql语句并将其插入我的数据库之前检查它的内容。
$file = fopen($filename, "r")
$filesize = filesize($filename);
$filecontent = fread($file, $filesize);
fclose($file);
$rows = explode("\n", trim($filecontent));
foreach ($rows as $row)
{
echo $row . '<br />';
}
答案 0 :(得分:2)
您正在按字符串\n
拆分字符串。除非实际字符串“\ n”出现在文件中的任何位置,否则这可能无效。你可能意味着"\n"
(double quotes),这使得它成为一个实际的换行符。
但是你的整个过程非常低效。您应该使用fgetcsv
并逐行处理文件,而不是一次性将其读入内存。
$handle = fopen('test.csv', 'r');
while (($row = fgetcsv($handle)) !== false) {
foreach ($row as $field) {
echo $field . '<br />';
}
}
fclose($handle);
答案 1 :(得分:0)
使用fgetcsv()函数将CSV文件转换为数组:
$csvFile = "test.csv";
$csvSeparator = ",";
$csvFileLength = filesize($csvFile);
$handle = fopen($csvFile, "r");
$csvData = fgetcsv($handle, $csvFileLength, $csvSeparator);
fclose($handle);
转储数据以显示结构:
var_dump($csvData);
现在您可以将数据转换为在数据库中使用。