我在php中有这个代码,它打开一个CSV文件,将第一行读入数组并显示内容:
if (($tmp = fopen($file, "r")) !== FALSE) {
$firstLine = fgetcsv($tmp, 0, ",");
print_r($firstLine);
}
问题是打印的数组显示Array ( [0] => increment_id...
应该在哪里Array ( [0] => increment_id...
。
我不知道那些第一个字符来自哪里,因为当我用 Notepad ++ 打开csv文件时它们不存在。我想我可以将文件转换为另一种编码,但这很难,因为它是我没有制作的程序的输出,除非有办法用PHP重新编码它。
答案 0 :(得分:2)
在Notepad ++中打开该文件,而不是转到“编码”菜单,而不是选择“在UTF-8中编码”。保存文件。这3个字节将消失。
或者你可以这样做:
file_put_contents($file, str_replace("\xEF\xBB\xBF", "", file_get_contents($file)));
if (($tmp = fopen($file, "r")) !== FALSE) {
$firstLine = fgetcsv($tmp, 0, ",");
print_r($firstLine);
}
这将从文件中删除UTF-8签名。
答案 1 :(得分:0)
现在您正在直接阅读并解析文件为CSV。更改方法:将文件作为字符串读取,然后将字符串解析为CSV,例如:
<?php
/*$file = "test.csv";
if (($tmp = fopen($file, "r")) !== FALSE) {
$firs= fgetcsv($tmp, 0, ",");
print_r($firstLine);
}*/
$handle = fopen( "test.csv", "r" );
$line = fgets( $handle ); // GET FIRST LINE IN FILE.
$line = str_getcsv( $line, "," ); // PARSE LINE AS CSV.
print_r( $line );
?>