[英]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);
}
?>
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.