¿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 № 1no 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;
}