Analizar números localizados con la clase Number de Laravel

  • Publicado el 18 junio, 2025
  • Palabras: 92

¿Necesitas analizar números localizados en tu aplicación Laravel? La clase Number ahora incluye métodos de análisis que gestionan formatos numéricos específicos de la configuración regional mediante la extensión Intl de PHP.

Analizar números localizados con la clase Number de Laravel

Al trabajar con aplicaciones internacionales, es frecuente recibir datos numéricos en diversos formatos locales. Los nuevos métodos de análisis de Laravel aprovechan la clase NumberFormatter de PHP para interpretar correctamente las cadenas numéricas localizadas, lo que facilita el manejo de datos numéricos de diferentes regiones. Veamos como funciona:

 

use Illuminate\Support\Number;

// Basic parsing
Number::parse($string);
Number::parseInt($string);
Number::parseFloat($string);

// With specific locale
Number::parseFloat(string: $string, locale: 'es');

// With custom type
Number::parse(
    string: $string,
    type: NumberFormatter::TYPE_INT64,
    locale: 'es',
);

 

#Ejemplo práctico

A continuación se explica cómo podría utilizar estos métodos en un sistema de comercio electrónico internacional:

 

class LocalizedDataProcessor
{
    public function processOrderData(array $orderData, string $locale)
    {
        return [
            'total' => Number::parseFloat($orderData['total'], locale: $locale),
            'tax' => Number::parseFloat($orderData['tax'], locale: $locale),
            'quantity' => Number::parseInt($orderData['quantity'], locale: $locale),
            'weight' => Number::parse(
                string: $orderData['weight'],
                type: NumberFormatter::TYPE_DOUBLE,
                locale: $locale
            )
        ];
    }

    public function handleCsvImport(string $filePath, string $locale)
    {
        $data = [];
        
        foreach ($this->readCsv($filePath) as $row) {
            $data[] = [
                'price' => Number::parseFloat($row['price'], locale: $locale),
                'discount' => Number::parseFloat($row['discount'], locale: $locale),
                'stock' => Number::parseInt($row['stock'], locale: $locale)
            ];
        }
        
        return $data;
    }
}

// Usage examples
$processor = new LocalizedDataProcessor();

// German format: "1.234,56" becomes 1234.56
$germanData = $processor->processOrderData([
    'total' => '1.234,56',
    'tax' => '234,56',
    'quantity' => '10'
], 'de');

// French format: "1 234,56" becomes 1234.56
$frenchData = $processor->processOrderData([
    'total' => '1 234,56',
    'tax' => '234,56',
    'quantity' => '10'
], 'fr');

 

Estos métodos de análisis manejan automáticamente la complejidad de diferentes formatos de números, lo que hace que sus aplicaciones internacionales sean más sólidas y fáciles de usar.

Antonio Jenaro

Desarrollador backend especializado en PHP y Laravel, con sede en Santander, Cantabria. Más de 15 años de experiencia en el desarrollo de aplicaciones web a medida y en la modernización de código heredado.

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Domina el formato de monedas en Laravel con el helper Number
186

Domina el formato de monedas en Laravel con el helper Number

Obtener la configuración regional y la moneda predeterminadas en Laravel con el Facade Number
122

Obtener la configuración regional y la moneda predeterminadas en Laravel con el Facade Number

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión