Tengo una línea como esta en mi CSV:
"Samsung U600 24"","10000003409","1","10000003427"
La cita al lado 24
se usa para expresar pulgadas, mientras que la cita al lado de esa cita cierra el campo. Estoy leyendo la línea fgetcsv
pero el analizador comete un error y lee el valor como:
Samsung U600 24",10000003409"
Intenté poner una barra diagonal inversa antes de la comilla de pulgadas, pero luego recibí una barra diagonal inversa en el nombre:
Samsung U600 24\"
¿Hay alguna manera de escapar adecuadamente de esto en el CSV, para que el valor sea Samsung U600 24"
, o tengo que regexearlo en el procesador?
Respuestas:
Use 2 citas:
fuente
No solo las comillas dobles, necesitará comillas simples (
'
), comillas dobles ("
), barra diagonal inversa (\
) y NUL (el byte NULO).Úselo
fputcsv()
para escribir yfgetcsv()
leer, lo que se encargará de todos.fuente
fputcsv()
muestra cómo puede usarfputcsv()
cuando desea enviar en formato csv al navegador en lugar de a un archivo real.Sé que esta es una publicación antigua, pero así es como la resolví (junto con la conversión de valores nulos a cadenas vacías) en C # usando un método de extensión.
Cree una clase estática con algo como lo siguiente:
Luego, para cada cadena que está escribiendo en CSV, en lugar de:
Tu solo haces:
fuente
Si un valor contiene una coma, un carácter de nueva línea o una comilla doble, entonces la cadena debe estar entre comillas dobles. Por ejemplo: "Newline char en este campo \ n".
Puede usar la herramienta en línea a continuación para "" y los operadores. https://www.freeformatter.com/csv-escape.html#ad-output
fuente