How to quickly replace money_format() in your PHP
If you’ve been using money_format() in your PHP code you may have recently (as of PHP 7.4.0) seen that it is now deprecated and the new hotness revolves around a class called NumberFormatter. Here’s how I quickly refactored to make the booboo go away.
I have a scheduled script that runs once a month to recalculate How much money you’d make if you bought Netflix shares instead of a Netflix subscription. Naturally, it uses money_format(formatString,value) all over the place. I didn’t want to manually change every instance, so….
At the top of my PHP file I added the following:
$fmt = numfmt_create( 'en-US', NumberFormatter::CURRENCY );
$symbol = $fmt->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL);
function money_format($ignore,$value) {
global $fmt,$symbol;
return $fmt->formatCurrency($value,$symbol);
}
Then (because I am a VI user) I replaced all:
:%s/money_format/money_format2/g
Which changes money_format() I wrote in the first part into money_format2(), but it does that to everything everywhere in the file, so it’s all good. Merely redeclaring money_format() makes PHP sad.
because I am running a LAMP stack (Linux/Apache/MySQL/PHP) I had to also install php-intl:
$ sudo apt-get install php-intl
So there you go! Easy peasy, lemon squeezy. If you liked that share with your friends and so on.