桁区切りのカンマを削除したり追加したりする方法

金額等の数字の表記は、各所でばらばらで面倒ですねぇ。


見やすいように、ちゃんと3桁区切りでカンマを入れていたり。
面倒だからか、そのまま出力していたり。


これらを統一的に処理するにはどうすればいいのか。
意外に関数の存在を見落とすので、メモしておきます。




ばらばらじゃ処理できないので、各所から情報を集めてきたら統一したフォーマットに整える必要があります。
そして出力する際も、統一したフォーマットで出力する必要があります。

桁区切りのカンマを削除する方法

$number = str_replace(',','',$english_format_number);


検索文字列に一致したすべての文字列を置換するstr_replaceを使います。
検索対象をカンマを指定、置換対象に何も指定しない。


それだけ。
あんまりシンプルなもので、後述するnumber_formatの逆〜みたいな関数はないようです。


PHP: str_replace - Manual
 http://jp.php.net/manual/ja/function.str-replace.php


桁区切りのカンマを追加する方法

$english_format_number = number_format($number);


number_formatという関数があります。
「数字を千位毎にグループ化してフォーマットする」関数だそうです。
3桁毎の区切り文字を指定したり、小数点以下の桁数を揃えたりすることもできるようです。


PHP: number_format - Manual
 http://jp.php.net/manual/ja/function.number-format.php


一応、money_formatという関数もあるようです。
が、setlocaleで円を指定して……とかちょっと面倒な感じです。


PHP: money_format - Manual
 http://jp.php.net/manual/ja/function.money-format.php


以上。
必要ないのに、preg_replaceで3桁ごとに取り出して……とかお馬鹿なことはやりたくないものです(というか、やってしまっていた私……)