У меня есть сайт в норвежском формате, поэтому цена продукта отображается как 1000,-
.
Это сайт на основе Magento, версия ce-1.9.2.1.
Теперь я хочу добавить тысячу разделителей (скорее всего, пробелы, но может быть любым символом) к этой цене, поддерживая ее формат, используя функцию number_format
или регулярное выражение, в зависимости от того, что лучше всего поддерживает целостность (например, 1 000,-
, 1 000 000,-
и т.д.).
У кого есть предложения?
Используя lookarounds в preg_replace
вы можете сделать это:
$str = preg_replace('/\..*$(*SKIP)(*F)|(?<=\d)(?=(?:\d{3})+(?!\d))/', ' ', $str);
\..*$(*SKIP)(*F)
будет игнорировать/пропускать часть после DOT
для этого преобразования.
Согласно моим 5-минутным исследованиям в google, формальный формат валюты для норвежской кроны - #.###,##
.
Единственная разница между этим форматом и тем, который вы предлагаете, заключается в том, что разделитель Krone является " "вместо"
.
", а специальное значение" ,00
"заменяется на" ,-
".
Основываясь на этом наблюдении, я просто выполнил бы следующий код, учитывая правильно отформатированное значение в формальном определении:
// expects "1.234,00" returns "1 234,-"
// "1.234.567,00" ==> "1 234 567,-"
// 5,50 ==> 5,50
function kroneDisplayFormat($formalFormat) {
$intermediate = str_replace(".", " "); // replace . separator with ' ' (space)
if( endsWith( $intermediate, ",00")) {
// special display case ",00" ==> ",-"
$final = str_replace(",00", ",-");
} else {
$final = $intermediate
}
return $final
}
1000123.45678
и вы хотите1 000 123.45678
качестве вывода?