我有一个.csv
文件,当我通过记事本打开它时,它看起来像:
ID501501503502
当我通过 php 在浏览器中打印它时,它看起来像
ID 501 501 503 502
我的代码是:
$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));
}
}
所以基本上br
for 循环内的标记不起作用。这是我的第一个问题。
第二个问题是即使我使用fputcsv(now it is turned off)
它并没有创建一个实际的csv
file.
现在我的问题是,为什么记事本中没有空间,而当我在浏览器中打印时却有空间?
我只有一栏,没有其他的。
非常感谢任何帮助。提前致谢。
正如我的评论中提到的,看起来您的原始文件是以 UNIX 行结尾保存的,然后您使用fgetcsv
在 Windows 中,因此整个文件被作为一行读取。大概有一个<br>
在整个输出的末尾。
因此,在处理文件之前,您需要对其进行预处理以转换行结尾。
在 Linux 上,该实用程序unix2dos
做你想做的事。或者,您可以简单地替换\n
with \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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)