SMART LLC

money_format()関数をnumber_format()関数で代替する方法

公開日:2015/03/23

PHPからのファイルアクセスを許可する方法から引き続き、Windows×IISでのPHP動作環境の構築。
Windowsでは使えない関数があったのでメモする。

money_format()関数

エラーの内容。

Fatal error: Call to undefined function money_format

関数が定義されてねえよて言ってる。
money_format()関数を見てみる。
今回インストールされてるPHPのバージョンは5.2.1。
PHP的には問題ない。
注意に書いてあった。
「システムで strfmon が使用可能な場合のみ money_format() 関数が定義されます。例えば、Windows では strfmon は使用できません。 そのため money_format() は Windows では 定義されていません。」
Windowsでは使えない関数だった。

number_format()関数

仕方ないので代替案を探す。
smartyのMoneyFormatPluginページがヒントになった。
number_format()関数を使った代替ロジックが書いてある。
これを日本円に直してやればOK。

代替ロジック

money_format()関数の場合。

setlocale( LC_MONETARY, "ja_JP.UTF8" );
echo money_format("%.{$places}n", $number);

$numberに1234.56、$placesに0を代入して実行した結果。

¥1,235

number_format()関数の場合。

echo "¥".number_format($number,$places);

$numberに1234.56、$placesに0を代入して実行した結果。

¥1,235

Windowsではmoney_format()関数がエラーになるのでLinuxで確認した。
Windowsでも該当ファイルを代替ロジックで書き換えて正常に動作することを確認。

SHARE