/ / cómo importar CSV usando zend - php, zend-framework, csv

cómo importar CSV usando zend - php, zend-framework, csv

¿Cómo importo archivos CSV usando zend framework? ¿Debería usar zend_file_transfer o hay alguna clase especial en la que tenga que investigar? Además, si uso zend_file_transfer, ¿hay algún validador especial para CSV?

Respuestas

13 para la respuesta № 1

no tiene que usar ninguna biblioteca zend para importar archivos csv, solo puede usar funciones php nativas, eche un vistazo a 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);
}

8 para la respuesta № 2

También podrías usar SplFileObject para leer archivos CSV.

Del manual 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 legsn", $animal, $class, $legs);
}
?>

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


1 para la respuesta № 3

Actualmente no hay forma de hacer esto con Zend Framework. ¿Cómo puede uno estar seguro?

Por ejemplo, Zend_Translate admite la traducción con archivos CSV, pero si comprueba el código fuente del adaptador respectivo (Zend_Translate_Adapter_Csv), puedes verificar que usa fgetcsv, y no una clase específica de Zend. Además, este adaptador CSV viene con la siguiente advertencia:

Nota: Tenga cuidado de que el adaptador Csv tenga problemas cuando sus archivos Csv son codificado de forma diferente a la configuración regional entorno de tu entorno Esto es debido a un error de PHP, que lo hará no ser reparado antes de PHP 6.0 (http://bugs.php.net/bug.php?id=38471). Por lo tanto, debe tener en cuenta que la Csv El adaptador debido a las restricciones de PHP no es locale aware.

que está relacionado con los problemas de la fgetcsv función.


0 para la respuesta № 4

Aquí hay una función que lee un archivo csv y devuelve una matriz de elementos que contienen los dos primeros valores de datos de columna.

Esta función podría leer un archivo de first_name, last_name por ejemplo.

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;
}