В битрикс-е есть замечательная PHP-функция CurrencyFormat(), объявленная в модуле currency (Валюты).
Данной функции вы отправляете число (стоимость), а она возвращает вам стоимость отформатированную в соответствии с правилами, указанными в настройках валют, то есть обрежет нужное кол-во десятичных знаков, отделит нужным символом тысячные разряды и добавит приписку "руб." например.
Как-то раз, работая с корзиной мы столкнулись с задачей форматировать цены ява-скриптом. Если подумать отвлеченно, сложно придумать задачу, где PHP-шной фунции форматирования не достаточно, но все таки такая задача появилась и выглядела она так:
В корзие при изменении количества нужно пересчитывать суммы заказа в реальном времени. С одной стороны все просто - после изменения количества товара посылаем ajax-запрос и получаем уже пересчитанные суммы, но задача была осложнена следующим:
Товар | Кол-во | Цена |
Брелок BMW | 1 200 руб. | |
Итого: 2 400 руб. |
Если у нас функция преобразования числа в отформатированную строку есть только на стороне PHP, то быстро меняющуюся строку мы ниак не сделаем. Пришлось писать js-функцию форматирования. С помощью регулярных выражений и нескольких условий это делается не сложно - готовых решений много.
function XFormatPrice(_number) { var decimal=0; var separator=' '; var decpoint = '.'; var format_string = '# руб.'; var r=parseFloat(_number) var exp10=Math.pow(10,decimal);// приводим к правильному множителю r=Math.round(r*exp10)/exp10;// округляем до необходимого числа знаков после запятой rr=Number(r).toFixed(decimal).toString().split('.'); b=rr[0].replace(/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g,"\$1"+separator); r=(rr[1]?b+ decpoint +rr[1]:b); return format_string.replace('#', r); }Но возникает одна проблема. Если настройки шаблона форматирования цен изменятся пользователем в админке... В таком случае JS-функция об этом никак не узнает. Выход был следующим - мы добавляем в наш скрипт (на нужную страницу), или в init.php (если страниц где данная функция используется будет много) следующий код:
<?include_once $_SERVER["DOCUMENT_ROOT"]."/XFormatPrice.php";?>и кладем скрипт XFormatPrice.php (скачать можно тут) в корень сайта, после чего у нас в заголовке страници появляется JS-функция XFormatPrice() с нужными настройками, которую уже можно использовать.