簡體   English   中英

如何使用 zend 導入 CSV

[英]how to import CSV using zend

如何使用 zend 框架導入 CSV 文件? 我應該使用 zend_file_transfer 還是需要查看任何特殊的 class ? 此外,如果我使用 zend_file_transfer 是否有任何用於 CSV 的特殊驗證器?

您不必使用任何 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);
}

您還可以使用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

Zend 框架目前無法做到這一點。 怎么能確定呢?

例如, Zend_Translate支持使用 CSV 文件進行翻譯,但是如果您檢查相應適配器的源代碼 ( Zend_Translate_Adapter_Csv ),您可以驗證它使用fgetcsv ,而不是特定的 Zend class。 此外,這款 CSV 適配器帶有以下警告:

注意:當您的 Csv 文件的編碼與您環境的區域設置不同時,請注意 Csv 適配器會出現問題。 這是由於 PHP 本身的錯誤導致的,在 PHP 6.0 之前無法修復(http://bugs.php.net/bug.php?id=3)。 因此,您應該知道 Csv 適配器由於 PHP 限制而無法識別區域設置。

這與fgetcsv function 的問題有關。

這是一個 function 讀取 csv 文件並返回包含前兩列數據值的項目數組。

例如,這個 function 可以讀取 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;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM