加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP项目中实现导入csv文件的代码指什么?

发布时间:2023-06-08 13:55:03 所属栏目:PHP教程 来源:
导读:这篇文章主要介绍“PHP项目中实现导入csv文件的代码是什么?”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP项目中实现导入csv文件的代码是什么?&
这篇文章主要介绍“PHP项目中实现导入csv文件的代码是什么?”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP项目中实现导入csv文件的代码是什么?”文章能帮助大家解决问题。
 
工作中常用到一些导入数据的功能,今天就给大家介绍一种方式,导入csv文件,此方式导入还是比较快的,但是也会存在一些问题。比如csv格式的表格制作麻烦,我的方法需要调整表格的编码为utf-8格式,并且导入过程中需要增加一列标示 。并且表名称不能为中文。都是影响成功与否的重要因素。对于导入数据我只做了简单的过滤处理。下面就给大家介绍一下吧。
 
代码如下:
 
//导入文件存放的具体位置。含文件路径需要创建好文件
 
$fname = “./saveFile/”.$_FILES[“myfile”][“name”];
 
//copy(要复制的文件,复制文件的目的地)
 
$do = copy($_FILES[“myfile”][“tmp_name”],$fname);
 
if($do){
 
//打开文件或者 URL r 以只读方式打开文件。
 
$handle=fopen(“$fname”,”r”);
 
//循环输出csv中读取出的数据
 
while ($data=_fgetcsv($handle,10000)){
 
//下面是查询商品是否存在存在将不插入进表
 
$ sql = ‘select id FROM ‘.$ecs->table(‘ssss’).” WHERE id =’$data[1]'”;
 
$res = $db->getOne($sql);
 
//如果不存在的都将插入到数据库中
 
if(!$res){
 
//过滤特殊字符
 
if($data[3]){
 
//单双引号、反斜线及NULL加上反斜线转义
 
$data[3]=addslashes($data[3]);
 
}
 
$sql = “INSERT INTO ” . $ecs->table(‘ssss’) .” (bl_num,id,c_id,g_name) VALUES (‘$data[0]’, ‘$data[1]’, ‘$data[2]’, ‘$data[3]’)” ;
 
$db->query($sql);
 
}
 
}
 
fclose($handle);
 
}
 
//上传csv函数做一些表格的处理程序不做介绍。我也没细研究(呵呵)
 
function _fgetcsv(&$handle, $ length = null, $d = ‘,’, $e = ‘”‘){
 
$d = preg_quote($d);
 
$e = preg_quote($e);
 
$_line = “”;
 
$ eof = false ;
 
while ($eof != true) {
 
$_line .= (empty ($length) ? fgets ($handle) : fgets($handle, $length));
 
$itemcnt = preg_match_all(‘/’ . $e . ‘/’, $_line, $dummy);
 
if ($itemcnt % 2 == 0)
 
$eof = true;
 
}
 
$_csv_line = preg_replace(‘/(?: |[ ])?$/’, $d, trim ($_line));
 
$_csv_pattern = ‘/(‘ . $e . ‘[^’ . $e . ‘]*(?:’ . $e . $e . ‘[^’ . $e . ‘]*)*’ . $e . ‘|[^’ . $d . ‘]*)’ . $d . ‘/’;
 
preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
 
$_csv_data = $_csv_matches[1];
 
for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {
 
$_csv_data[$_csv_i] = preg_replace(‘/^’ . $e . ‘(.*)’ . $e . ‘$/s’, ‘$1’ , $_csv_data[$_csv_i]);
 
$_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
 
}
 
return empty ($_line) ? false : $_csv_data;
 
}
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!