勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法

  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に標準搭載されている関数で対応できたのは驚き。

あんまり使う機会は無いと思うが引き出しとして覚えておきたいところ。

 - PHP

  関連記事

PHPで作成したプログラムをcron設定し自動実行する方法
PHPで作成したプログラムをcron設定し自動実行する方法

cronの設定方法。サーバー側での設定とPHP側での書き方を以下にメモ。 &nb ...

TCPDF&FPDIでテンプレートPDFを使用し、複数ページのPDFを作成する方法
TCPDF&FPDIでテンプレートPDFを使用し、複数ページのPDFを作成する方法

TCPDF&FPDIを用いて請求書PDFを発行するシステムがあった。請求 ...

Stripe Checkoutにてクレジットカード決済の際に3Dセキュア対応にする方法
Stripe Checkoutにてクレジットカード決済の際に3Dセキュア対応にする方法

先日Stripe Checkoutを用いたクレジットカード決済機能についてメモし ...

PHP7.4でAPCuとOPcacheをインストールする方法
PHP7.4でAPCuとOPcacheをインストールする方法

先日本ブログのサーバをCentOS6系から7系に移行し、その際にMySQLのバー ...

PHPのintval
PHPのintval

intvalという見たこと無い関数があったのでメモ。 ■リファレンス http: ...