Home > Backend Development > PHP Tutorial > 读取CSV文件时如何从第二行开始读?以及乱码问题。

读取CSV文件时如何从第二行开始读?以及乱码问题。

WBOY
Release: 2016-06-06 20:51:19
Original
2475 people have browsed it

用这种方法读取CSV文件:

<?php $file = fopen("contacts.csv","r");
 
while(! feof($file))
  {
  print_r(fgetcsv($file));
  }
 
fclose($file);
 
?> 
Copy after login
Copy after login

一下子把所有数据取出来了,文件的第一行是标题,第二行以后是要取的数据,怎么取?

还有读出的非英文字符显示为乱码,怎么处理?

回复内容:

用这种方法读取CSV文件:

<?php $file = fopen("contacts.csv","r");
 
while(! feof($file))
  {
  print_r(fgetcsv($file));
  }
 
fclose($file);
 
?> 
Copy after login
Copy after login

一下子把所有数据取出来了,文件的第一行是标题,第二行以后是要取的数据,怎么取?

还有读出的非英文字符显示为乱码,怎么处理?

1. while之前加一行 fgets($file);
2. 你的文件编码是啥,显示出来的应该是啥编码,搞清楚以后用iconv/mbstring转码一下就好了。

1.在页面最顶端加入:header("Content-type:text/html;charset=utf-8");
2.

<?php $file = fopen("contacts.csv","r");
$data = fgetcsv($file);
while(! feof($file))
  {
  print_r($data = fgetcsv($file));
  }
 
fclose($file);
 
?> 
Copy after login

另一种方式:

$str = file_get_contents("contacts.csv");  
$arr = explode("\n",$str);
print_r($arr[1]);
Copy after login

$file = fopen("contacts.csv", "r");
fgetcsv($file);
while(!feof($file) && $data = fgetcsv($file))
 {
        $csv_datas = array();
	$csv_datas['column1'] = mb_convert_encoding($data[1], 'UTF-8', 'UTF-8,Shift_JIS'); 
	// ...
}
Copy after login

值得注意的是,第一列要加多余的列,真实数据从第二列才开始读得对,不知为什么。

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template