El array no detecta la coma como separador decimal

Hola amig@s, necesito ayuda...

Por un lado tengo un archivo csv cuyas columnas están separadas por punto y coma, pero hay campos numéricos cuyo separador decimal es la coma... Este archivo me lo genera una aplicación y no puedo actuar sobre él...

Desde mi web, en php, genero una array con los datos de ese archivo csv:

$linea =   fgets($archivo)
$arrayDatos =   explode(";", $linea);

Cuando extraigo los datos uno por uno del array, los números decimales "obvia" los decimales y me deja solo la parte entera.

El problema está en la coma, he probado a cambiar en windows el separador decimal por el punto y me funciona (ya que el programa que genera el csv lo genera con punto como separador decimal), pero cuando lo devuelvo a la coma continúa el problema.

¿Hay forma de solventarlo sin tener que recurrir a cambiar el separador decimal de windows, ni tener que "tocar" el archivo csv?

Respuesta
1

I. Hola Mario, no soy conocedor pero tuve la fortuna de ver un poco de información en Inglés y español que deseaba trasladarle por si pudiese serle de alguna utilidad mientras le atiende un experto de primera mano. Le ruego me disculpe por todas las molestias de lectura y el tipo de respuesta, ánimo.

https://es.stackoverflow.com/questions/136392/problema-con-n%C3%BAmeros-con-coma-en-php 

https://stackoverflow-com.translate.goog/questions/7461459/change-comma-to-dot-working-with-decimals-in-php?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://es.stackoverflow.com/questions/145450/problema-con-decimales-y-miles 

https://stackoverflow-com.translate.goog/questions/4325363/converting-a-number-with-comma-as-decimal-point-to-float?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www-php-net.translate.goog/manual/en/function.number-format.php?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.forosdelweb.com/f18/problemas-redondear-1104771/ 

https://www.forosdelweb.com/f18/array-numeros-decimales-887492/ 

https://www.forosdelweb.com/f18/separar-array-por-comas-borrar-espacios-blanco-858454/ 

https://www-php-net.translate.goog/manual/en/language.types.array.php?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://wordpress-stackexchange-com.translate.goog/questions/371010/i-cant-separate-the-array-by-commas?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://es.stackoverflow.com/questions/469238/como-forzar-al-pedir-un-dato-decimal-que-el-usuario-lo-ingrese-con-comas-para-qu 

https://toolset-com.translate.goog/forums/topic/using-comma-as-decimal-separator-in-number-field/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.youtube.com/watch?v=URMlPXn8Zuk

https://forum-opencart-com.translate.goog/viewtopic.php?t=30727&_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://lab-civicrm-org.translate.goog/dev/core/-/issues/4154?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

1 respuesta más de otro experto

Respuesta
1

Hola Mario Perez, te diría que lo intentes con las funciones específicas de CSV que trae PHP.

Por ejemplo https://www.php.net/manual/es/function.fgetcsv.php 

Una vez tengas el arreglo puedes usar https://www.php.net/manual/es/function.sscanf.php para que el número se interprete como tú necesitas o también podrías valerte de un https://www.php.net/manual/es/numberformatter.parse.php 

Éxitos!

¡Muchas gracias por el aporte, solventado! 

Genial :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas