Obtengo datos CSV de una llamada SOAP en php. Lamentablemente, los datos pueden tener comas. Tiene el formato correcto como enTratar con comas en CSV
1, nombre, 2, lazo, 3, "primero, último", 5, NMEA, ...
tengo que analizarlo a valores individuales, ya sea en php o javascript . He navegado a través de subprocesos en el desbordamiento de la pila y en otros lugares, pero no he encontrado una solución específica en php/javascript.
El enfoque que actualmente estoy usando es
$subject = '123,name,456,lryyrt,123213,"first,last",8585,namea3';
$pattern = '/,|,"/';
$t2=preg_replace ('/,|(".*")/','$0*',$subject);
$t2=str_replace(',','*',$t2);
$t2=str_replace('*',',',$t2);
Donde * es el deliminator, pero el preg_replace
genera un extra *. He intentado un par de otros enfoques que implican preg_match
y otras funciones preg_
pero no tuve éxito en tener ningún tipo de división limpia.
¿Alguna sugerencia sobre cómo dividir los datos CSV que contienen comas en ella?
Para tener en cuenta, str_getcsv no está disponible hasta PHP 5.3. Antes de eso, se usó fgetcsv. Si no estaba obteniendo su contenido directamente de un archivo u otra secuencia, entonces podría tener que forzarlo en una secuencia (php: // memoria, escribir y restablecer la posición) o archivo primero. – Zimzat