2012-04-06 25 views
5

Estoy teniendo un archivo csv con 1 id de correo electrónico en cada línea. Quiero agregar una coma después de cada identificación de correo electrónico. Quiero agregar una coma al final de cada línea usando php. ¿Cómo puedo hacer esto? ¿Hay una función particular para eso?Agregue una coma al final de cada línea usando php

ACTUALIZACIÓN Quiero esto para que pueda construir una matriz en javascript.

Voy a cargar el archivo csv usando php y luego imprimirlo en mi js.

Como

var myCars=[<?php print $csv; ?>]; 

Así que acheive algo como esto.

var myCars=["[email protected]","[email protected]","[email protected]"]; 

¿O existe una forma mejor de hacerlo?

+0

Al agregar comas, ¿cada línea ya no la convertiría en un archivo CSV válido? ¿Puedes explicar tu caso de uso – Baba

+0

? Quiero que sea un csv válido. – esafwan

+0

Los archivos sin comas ya son CSV válidos. ¿Cuál es la verdadera naturaleza del problema que estás experimentando? ¿Fallo al analizar? –

Respuesta

2

Por qué no utilizar las funciones-CSV específico?

$old = fopen('file.csv','r'); 
$new = fopen('new.csv','w+'); 
while($line = fgetcsv($old)) 
{ 
    fputcsv($new,$line); 
} 
fclose($old); 
fclose($new); 

El código anterior escribirá un nuevo csv, línea por línea, pero si lo que desea es generar una matriz de JavaScript, por qué no hacer esto:

$file = fopen ('file.csv','r'); 
$all = array(); 
while($line = fgetcsv($file)) 
{ 
    $all[] = $line[0];//if there is only 1 field/line 
    $all = array_merge($all,$line);//if multiple 
} 
fclose($file); 
$js_array = '["'.implode('",',$all).'"];'; 
//or, the way I'd advise against, but good for multi-dimensional, assoc arrays 
echo 'var array = JSON.parse("'.json_encode($all).'");'; 
5
$lines = file('file.csv'); 
foreach ($lines as & $line) { 
    $line .= ','; 
} 
file_put_contents('file.new.csv', implode(PHP_EOL, $lines)); 

algo así como que debe hacer, aplausos

+0

Actualmente la coma viene en una nueva línea. :/¿Hay alguna forma de que llegue el final de cada id de correo electrónico? – esafwan

+0

correcto, mi culpa, debería agregar un recorte(): $ line = trim ($ line). ','; en lugar de $ line. = ','; – smassey

+0

aún no funciona, supongo, ¿puedes actualizar el código y mostrarme? – esafwan

2
<?php 
$lines = file('org.csv'); 
foreach ($lines as & $line) { 
    $line = trim($line) . ','; 
} 
file_put_contents('new.csv', implode(PHP_EOL, $lines)); 
+1

después de leer su última actualización, yo diría que para agregar esto para el JS, necesita eliminar la última coma final de la última línea, de lo contrario la matriz se dividirá en JS: var myCars = []; – smassey

2

por qué no sólo

$csv = str_replace("\n", ",\n", $csv); 
2

En lugar de hacer eco de una cadena csv completa, puede importar el archivo a una matriz utilizando la función fgetcsv, luego resuélvala usando json_encode(). De esta forma, está seguro de obtener una matriz de JavaScript válida. También citará y codificará cualquier cadena para usted.

Ah, recuerde ejecutar la matriz a través de un iterador que ejecutará utf8_encode en todas las cadenas. Si tiene caracteres utf8 no válidos, json_encode se eliminará.

Hay muchos ejemplos en php.net de hacer las diferentes partes de esto, pero puedo proporcionar algunos ejemplos si es necesario.

Cuestiones relacionadas