Заметки кодящего дизайнера

Как форматировать цену

Решение задачи с выводом строки с ценой на сайте.

Условия задачи следующие:

  • иногда случаются ошибки в ценообразовании, на сайт попадают нулевые или астрономические цены — такие надо отсечь;
  • корректные числа нужно форматировать.

Правила обработки ошибок

Ошибкой считаются следующие случаи:

  • переданное значение не является числом;
  • передано нулевое значение;
  • передано значение меньше 100;
  • передано значение больше 10 000 000.

Последние два пункта — частные случаи. Сто процентов не может быть таких маленьких или таких больших цен.

В случае ошибки выводится строка «Цена по запросу».

Правила форматирования корректных чисел

  • все числа до 9999 включительно пишутся слитно;
  • у чисел больше 9999 каждые три разряда с конца отбиваются тонким неразрывным пробелом;
  • в конце ставится знак рубля, отбитый от числа неразрывным пробелом.

Решение

private function formatPrice($price) {
    // Проверяем, является ли входное значение числом
    if (!is_numeric($price) || $price < 100 || $price > 10000000) {
        return "цена по запросу";
    }

    // Форматируем число
    if ($price > 9999) {
        $formattedPrice = number_format($price, 0, '', "&#8239;");
    } else {
        $formattedPrice = $price;
    }

    // Возвращаем строку с ценой и символом рубля
    return $formattedPrice . "&nbsp;₽";
}