Для онлайн-калькулятора, где пользователи могут ввести сумму энергии для расчета соответствующих сборов, мне нужен PHP-скрипт для приема различных пользовательских входов. Значение «2 миллиона и одна четвертая джоуль» может быть введено как:
2000000.25 (стандартная нотация)
2 000 000,25 (с разделителем тысяч)
2000000,25 (запятая в виде десятичной точки)
2.000.000,25 (запятая в виде десятичной точки, с разделителем тысяч)
2'000'000.25 (альтернативный формат)
2 000 000,25 (французская нотация)
Как я мог сделать сценарий осведомленным о таких различиях?
Моя первая попытка состояла в том, чтобы просто str_replace альтернативные символы по умолчанию, но период (.) Может быть десятичным или тысячным разделителем. Я пытался использовать sscanf, но как я могу убедиться, что он правильно читает номер?
Большинство пользователей будут указывать только две цифры после десятичной точки, но есть ли способ отличить 1.234 (1 балл 234, период как десятичный разделитель) и 1.234 (одна тысяча двести тридцать четыре, период как разделитель тысяч)?