读取csv文件并使用php创建另一个csv文件

Raj*_*Raj 5 php csv

我有一个.csv文件,当我通过记事本打开它时,它看起来像:

ID501501503502
Run Code Online (Sandbox Code Playgroud)

当我通过php在浏览器中打印它时,它看起来像

ID 501 501 503 502
Run Code Online (Sandbox Code Playgroud)

我的代码是:

$handle = fopen("MonC1.csv", "r");
$data = fgetcsv($handle, 0);
$fh = fopen('php://output', 'w');
if (! empty($data)) {
  foreach ($data as $item) {
      echo $item."<br>";
     //fputcsv($fh, array($item));
  }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上brfor循环中的标签不起作用.这是我的第一个问题.

第二个问题是即使我使用fputcsv(now it is turned off)它也不会创建一个实际的csv文件.

现在我的问题是它是如何在记事本中没有空间的,当我在浏览器中打印时它会获得空间?

我只有一列,没有别的.

任何帮助都非常感谢.提前致谢.

Int*_*ang 0

正如我在评论中提到的,看起来您的原始文件是以 UNIX 行结尾保存的,然后您fgetcsv在 Windows 中使用,因此整个文件被作为一行读取。<br>整个输出的末尾可能有一个。

因此,在处理文件之前,您需要对其进行预处理以转换行结尾。

在 Linux 上,该实用程序unix2dos可以执行您想要的操作。或者,您可以简单地在文件中\n替换为。\r\n

另一个问题是fgetcsv不会将整个文件转换为数组。相反,它从文件句柄中读取一行,并将其转换为数组。您需要读取循环内的行:

while (($data = fgetcsv($handle)) !== FALSE) {
  // $data contains one line of the CSV, in array form
  // now you can fputcsv the single line
}
Run Code Online (Sandbox Code Playgroud)