如何使用zend导入CSV

时间:2011-06-13 18:10:03

标签: php zend-framework csv

如何使用zend框架导入CSV文件?我应该使用zend_file_transfer还是有任何我必须研究的特殊类?另外,如果我使用zend_file_transfer是否有任何特殊的CSV验证器?

4 个答案:

答案 0 :(得分:13)

您不必使用任何zend库来导入csv文件,您只需使用本机php函数,看看fgetcsv

$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

答案 1 :(得分:8)

您也可以使用SplFileObject来阅读CSV文件。

从php手册:

<?php
    $file = new SplFileObject("animals.csv");
    $file->setFlags(SplFileObject::READ_CSV);
    foreach ($file as $row) {
        list($animal, $class, $legs) = $row;
        printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
    }
?> 

http://php.net/manual/en/splfileobject.fgetcsv.php

答案 2 :(得分:1)

目前无法使用Zend Framework执行此操作。怎么可以肯定?

例如, Zend_Translate 支持使用CSV文件进行翻译,但如果您检查相应适配器的源代码( Zend_Translate_Adapter_Csv ),则可以验证它是否使用 fgetcsv ,而不是特定的Zend类。此外,此CSV适配器还附带以下警告:

  

注意:请注意Csv适配器   你的Csv文件的问题   编码与区域设置不同   设置你的环境。这是   由于PHP本身的Bug将会   在PHP 6.0之前不能修复   (http://bugs.php.net/bug.php?id=38471)。   所以你应该知道Csv   由PHP限制的适配器不是   区域设置意识。

fgetcsv 功能的问题有关。

答案 3 :(得分:0)

这是一个读取csv文件并返回包含前两列数据值的项目数组的函数。

此函数可以读取first_name的文件,例如last_name。

function processFile ($filename) {
    $rtn = array();

    if (($handle = fopen($filename, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $item = array();
            $item[] = $data[0];
            $item[] = $data[1];
            $rtn[] = $item;
        }
    }
    return $rtn;
 }