我在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重新编码它。
在notepad++中打开该文件,然后转到"Encoding"菜单,然后选择"Encode In 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签名从文件
现在您正在直接读取和解析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 );
?>