PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法
PHPにて漢数字と普通の数字の相互変換を行いたい。例えば「123465789」⇔「一億二千三百四十六万五千七百八十九」のように変換したい。複雑な処理が必要になるかと思ったがNumberFormatterクラスを利用することで簡単に実装できた。以下に実装方法をメモ。
目次
ソースコード
数字→漢数字
$num = 123465789; $num_class = new NumberFormatter('ja', NumberFormatter::SPELLOUT); var_dump($num_class->format($num)); //一億二千三百四十六万五千七百八十九
漢数字→数字
$num = '一億二千三百四十六万五千七百八十九'; $num_class = new NumberFormatter('ja', NumberFormatter::SPELLOUT); var_dump($num_class->parse($num)); //123465789
注意点
大きい数字の場合は変換できない可能性あり
当方の環境だと18,014,398,509,481,984(一京八千十四兆三千九百八十五億九百四十八万千九百八十四)が最大値で、それ以上だと正常に変換できなかった。
兆を超えるような数値を漢数字に変換する機会というのはあまり無さそうではあるが、そのような機会があった場合は独自の関数を作って処理する必要あり。
PHPのバージョンが5.3以上
NumberFormatterクラスの要件が5.3以上となる。バージョン5.3未満の環境は今時見かけないが、そのような機会があった場合はこちらも独自の関数を作って処理する必要あり。
リファレンス
NumberFormatterクラス
https://www.php.net/manual/ja/class.numberformatter.php
NumberFormatter::format
https://www.php.net/manual/ja/numberformatter.format.php
NumberFormatter::parse
https://www.php.net/manual/ja/numberformatter.parse.php
所感
漢数字だと使っているのは日本だけだろうからライブラリを探すのも大変だなぁと思いきやPHPに標準搭載されている関数で対応できたのは驚き。
あんまり使う機会は無いと思うが引き出しとして覚えておきたいところ。
関連記事
-
-
ブラウザ上でファイルのアップ・ダウンロードが可能なTiny File Managerの利用方法
ブラウザ上でファイルのアップ・ダウンロードが可能なファイルマネージャーを設置した ...
-
-
PHPでテンプレートPDFに動的に文字や数値を追記し出力する方法(TCPDF&FPDI)
請求書や領収書のテンプレートがあり、そちらに対して動的に文字・数値を追記し出力さ ...
-
-
迷惑メール対策でフォームにGoogle reCAPTCHA v2を導入する方法
お問い合わせフォームのスパムメール対策としてreCAPTCHAを導入したいという ...
-
-
PHP7が2015年11月にリリースされるらしい
PHP7で変わること ——言語仕様とエンジンの改善ポイント from Yoshi ...
-
-
フォルダにリンク制限をかける
imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...