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.