validar separado procesar por masiva listar leer importar datos con comas carga cabecera archivo php csv split

separado - Cómo extraer datos del archivo csv en PHP



procesar csv (7)

Tengo un archivo csv que se parece a esto

$lines[0] = "text, with commas", "another text", 123, "text",5; $lines[1] = "some without commas", "another text", 123, "text"; $lines[2] = "some text with commas or no",, 123, "text";

Y me gustaría tener una mesa:

$t[0] = array("text, with commas", "another text", "123", "text","5"); $t[1] = array("some without commas", "another text", "123", "text"); $t[2] = array("some text, with comma,s or no", NULL , "123", "text");

Si uso split($lines[0],",") obtendré "text" ,"with commas" ... ¿Hay alguna forma elegante de hacerlo?


Supongamos que tiene una función crear para las mismas cosas, entonces debería verse como

function csvtoarray($filename='''', $delimiter){ if(!file_exists($filename) || !is_readable($filename)) return FALSE; $header = NULL; $data = array(); if (($handle = fopen($filename, ''r'')) !== FALSE ) { while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { if(!$header){ $header = $row; }else{ $data[] = array_combine($header, $row); } } fclose($handle); } if(file_exists($filename)) @unlink($filename); return $data; } $data = csvtoarray(''file.csv'', '',''); print_r($data);


aquí también hay un método simple para leer el archivo csv.

$sfp = fopen(''/path/to/source.csv'',''r''); $dfp = fopen(''/path/to/destination.csv'',''w''); while ($row = fgetcsv($sfp,10000,",","")) { $goodstuff = ""; $goodstuff = str_replace("¦",",",$row[2]); $goodstuff .= "/n"; fwrite($dfp,$goodstuff); } fclose($sfp); fclose($dfp);


Puede usar fgetcsv para analizar un archivo CSV sin tener que preocuparse por analizarlo usted mismo.

Ejemplo de PHP Manual:

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


WebIt4Me / reader proporciona una herramienta para leer o buscar a través de un archivo CSV




Puede usar algo como https://github.com/htmlburger/carbon-csv que permita el mapeo de columnas:

$csv = new /Carbon_CSV/CsvFile(''path-to-file/filename.csv''); $csv->set_column_names([ 0 => ''first_name'', 1 => ''last_name'', 2 => ''company_name'', 3 => ''address'', ]); foreach ($csv as $row) { print_r($row); }

El resultado del siguiente código sería algo así como:

Array ( [0] => Array ( [first_name] => John [last_name] => Doe [company_name] => Simple Company Name [address] => Street Name, 1234, City Name, Country Name ) [1] => Array ( [first_name] => Jane [last_name] => Doe [company_name] => Nice Company Name [address] => Street Name, 5678, City Name, Country Name ) )

Otra biblioteca que hace lo mismo (y mucho más) es http://csv.thephpleague.com/9.0/reader/