php - 如何在codeigniter中将csv文件导入到mysql

标签 php mysql codeigniter date csv

我有一个 csv 文件格式,如您所见,其中有“2013 年 1 月 7 日”,如何将其转换为 2013-01-07。

WS-C3750X-48P-L,SOLAIRE,,FDO1651X2H9,"JAN. 7, 2013","JAN. 6, 2014",,1 Year,CISCO,Covered Under Warranty,30 Days,NA,"JAN. 2, 2013","APR. 2, 2014",1 Year and 3 Months,888-1,12643158

当我使用 print_r() 时,它会显示 csv 文件中的这种格式,但在上面的示例中没有插入,你能告诉我为什么吗?

GLC-SX-MM,SOLAIRE,,AGM1620L2LU,No Records,No Records,,NA,NA,NA,NA,NA,No Records,No Records,NA,No Records,No Records

这是我使用的库代码。

代码:

class CSVReader {

    var $fields;            /** columns names retrieved after parsing */ 
    var $separator = ';';    /** separator used to explode each line */
    var $enclosure = '"';    /** enclosure used to decorate each field */

    var $max_row_size = 4096;    /** maximum row size to be used for decoding */

    function parse_file($p_Filepath) {

        $key_field = 'model,client_name,end_user,serial_num,trends_warranty_start,trends_warranty_end,client_contract_no,trends_warranty_period,vendor,support_coverage,sla,service_contract_num,support_coverage_start,support_coverage_end,support_coverage_period,trends_po,supplier_so';

        $file = fopen($p_Filepath, 'r');
        $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
        $keys_values  = explode(',',$key_field);

        $content    =   array();
        $keys   =   $this->escape_string($keys_values);

        $i  =   0;
        while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) { 

            if( $row != null ) { // skip empty lines
                $values =   explode(',',$row[0]);

                if(count($keys) == count($values)){
                    $arr        =   array();
                    $new_values =   array();
                    $new_values =   $this->escape_string($values);
                    for($j=0;$j<count($keys);$j++){
                        if($keys[$j] != ""){

                            $arr[$keys[$j]] =   $new_values[$j];                        
                        }
                    }


                    $content[$i]=   $arr;
                    $i++;
                }
            }
        }
        fclose($file);
        return $content;
    }

    function escape_string($data){
        $result =   array();
        foreach($data as $row){
            $result[]   =   str_replace('"', '',$row);
        }
        return $result;
    }   
}

最佳答案

将“JAN. 7, 2013”​​转换为 2013-01-07。试试这个

$str = 'JAN. 7, 2013';
echo date("Y-m-d", strtotime($str))

关于php - 如何在codeigniter中将csv文件导入到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19219616/

相关文章:

php - 将多个值从下拉 View 发送到 Controller 操作

php - 上传 xls 或 xlsx 文件时出现 codeigniter,mime 类型错误

php - 通过 ajax onchange 事件传递选定的值

PHP + FFMPEG + S3。直接在 S3 存储桶之间转码视频

PHP 上传图片

mysql - 连接表 a 到表 b 在匹配子字符串上的效率低下......想法?

php - PHP 中的多线程

php - 转义数组中的变量并将转义值动态分配给原始变量值

mysql - 更新我的 mysql jdbc jar 后,我的日期插入不再有效

javascript - 如何在codeigniter中显示json数据