Как заменить * на ✪ ("& \ # x272A;") в `money_format`? - PullRequest
0 голосов
/ 24 января 2019
setlocale(LC_MONETARY, 'en_US');
$str = money_format('%=*#4.4n',163.17852837291);

возвращает $**163.1785 для $str.

Вместо этого я хочу напечатать $✪✪163.1785.

Как мне решить проблему?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете определить определенную функцию следующим образом:

function m_money_format($f, $s)
{
    return str_replace("*", "&\#x272a;", money_format($f,$s));
}

setlocale(LC_MONETARY, 'en_US');
$str = m_money_format($f, $s);

Таким образом, вы можете вызывать функцию всякий раз, когда вам это нужно, в каждой части кода

0 голосов
/ 24 января 2019

money_format может принимать только один символ заполнения байта, поэтому вы не можете напрямую достичь желаемого. Однако вы можете использовать str_replace после money_format, чтобы изменить * на :

setlocale(LC_MONETARY, 'en_US');
$str = money_format('%=*#4.4n',163.17852837291);
$str = str_replace('*', '✪', $str);
echo $str;

Выход:

✪163.1785

Обратите внимание, что есть только один , так как вы указали ширину 4, и у вас есть 3 цифры в номере.

Демонстрация на 3v4l.org

...