Парсинг локалізованих чисел за допомогою класу Number у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 червня, 2025
Laravel надає клас Number, який спрощує обробку чисел у форматах різних країн завдяки методам парсингу, що використовують розширення PHP Intl. Чи готові ви дізнатися, як ці інструменти можуть зробити ваші міжнародні додатки ще зручнішими? Читайте далі, щоб розкрити секрети ефективної обробки чисел у підтримці багатомовності

Клас Number у Laravel надає можливість обробки чисел у форматах, що залежать від локалі, завдяки використанню розширення PHP Intl. Це спрощує обробку числових даних на міжнародному рівні.

Автоматичне опрацювання різних форматів локалей:

use Illuminate\Support\Number;
 
Number::parse($string);
Number::parseInt($string);
Number::parseFloat($string);
 
// З конкретною локаллю
Number::parseFloat(string: $string, locale: 'fr');
 
// З нестандартним типом
Number::parse(
    string: $string,
    type: NumberFormatter::TYPE_INT64,
    locale: 'fr',
);

Ось приклад використання цих методів у системі фінансової звітності:

class FinancialDataProcessor
{
    public function processReportData(array $reportData, string $locale)
    {
        return [
            'revenue' => Number::parseFloat($reportData['revenue'], locale: $locale),
            'expenses' => Number::parseFloat($reportData['expenses'], locale: $locale),
            'transactions' => Number::parseInt($reportData['transactions'], locale: $locale),
            'margin' => Number::parse(
                string: $reportData['margin'],
                type: NumberFormatter::TYPE_DOUBLE,
                locale: $locale
            )
        ];
    }
 
    public function importFinancialData(string $filePath, string $locale)
    {
        $records = [];
 
        foreach ($this->readSpreadsheet($filePath) as $row) {
            $records[] = [
                'amount' => Number::parseFloat($row['amount'], locale: $locale),
                'commission' => Number::parseFloat($row['commission'], locale: $locale),
                'units' => Number::parseInt($row['units'], locale: $locale)
            ];
        }
 
        return $records;
    }
}
 
$processor = new FinancialDataProcessor();
 
// Формат італійською: "1.234,56" перетворюється на 1234.56
$italianData = $processor->processReportData([
    'revenue' => '1.234,56',
    'expenses' => '456,78',
    'transactions' => '25'
], 'it');
 
// Формат іспанською: "1.234,56" перетворюється на 1234.56
$spanishData = $processor->processReportData([
    'revenue' => '1.234,56',
    'expenses' => '456,78',
    'transactions' => '25'
], 'es');

Ці методи парсингу автоматично обробляють різноманітність форматів чисел, роблячи ваші міжнародні застосунки більш надійними та зручними для користувачів