2011-06-13 56 views
11

導入CSV如何導入使用Zend Framework CSV文件?我應該使用zend_file_transfer還是有任何特殊的類,我必須看看?另外,如果我使用zend_file_transfer是否有CSV的特殊驗證程序?如何使用Zend

+3

據我所知,沒有階級的Zend解析CSV(除非你正在尋找解析一個翻譯文件,Zend_Translate或者如果您將Zend_Auth用於CSV文件)。 'fgetcsv'非常簡單,所以我想這裏不需要上課。 – netcoder 2011-06-13 18:43:33

+0

@netcoder好的!非常感謝 – JABD 2011-06-13 20:43:56

回答

12

你沒有使用任何的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); 
} 
+2

側面警告:'fgetcsv()'不能真正支持unicode,所以你可能需要調整語言環境。 – Darien 2011-06-13 18:18:05

+0

是的,我知道如何使用fgetcsv,但我特別感興趣通過zend。無論如何感謝您的回覆。 – JABD 2011-06-13 18:18:47

+0

內置的CSV功能有缺陷和越野車。嘗試在原生PHP中解析CSV是一場噩夢。 – 2013-05-20 15:34:45

1

目前還沒有辦法使用Zend做到這一點框架。如何確定?

例如,了Zend_Framework支持使用CSV文件的翻譯,但如果你檢查各個適配器(Zend_Translate_Adapter_Csv)的源代碼,你可以驗證它使用fgetcsv,而不是一個具體的Zend類。此外,該CSV適配器附帶以下警告:

注意:要注意的是該CSV適配器有 問題,當您的CSV文件 比你的環境的區域 設置編碼不同。這是 由於PHP自身的錯誤,這將不 PHP 6.0之前被固定 (http://bugs.php.net/bug.php?id=38471)。 所以,你應該知道,在CSV 適配器由於PHP限制不 語言環境意識。

這與fgetcsv函數的問題有關。

0

下面是讀取csv文件,並返回包含前兩個列數據值項的數組的函數。

此功能可以讀取例如FIRST_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; 
} 
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

+0

SplFileObject不提供任何有用的驗證/錯誤 - 傳入垃圾只會導致$ row是一個元素的數組,其中元素是整行。 – 2014-11-27 13:52:54