日本語とは厄介なのでしょうか? とても扱いやすい言語だとは思います. 特に数字周りに関しては素晴らしい思っています. 英語の数え方とか加減乗除とかは厄介だと思います.
では, 日本の厄介な部分はどこかというと, マルチバイト文字だということ. 文字数が多すぎる.
ということで, 今回はローマ数字周りのライブラリです.
まずは, マルチバイト周りのローマ数字について. 10を例に話します.
x | X | x | X | ⅹ | Ⅹ | |
---|---|---|---|---|---|---|
説明 | 半角小文字 | 半角大文字 | 全角小文字 | 全角大文字 | ローマ数字(小文字) | ローマ数字(大文字) |
Unicode | 120 | 88 | 65368 | 65336 | 8569 | 8553 |
11を表すには? xi
? XI
? xi
? XI
? ⅺ
? Ⅺ
?
辛い.
そんなわけでtaniko/romans
を作りました.
インストールはcomposer require taniko/romans
でできます.
<?php
require 'vendor/autoload.php';
// 全角大文字
var_dump(Taniko\Romans\Parser::toInt('MMXVII'));
// int(2017)
// ローマ数字(大文字)
var_dump(Taniko\Romans\Parser::toInt('MMⅩVII'));
// int(2017)
ちなみに, PHP 7.2からはmb_ord()
, mb_chr()
が使えるようになりました. symfony/polyfill-mbstring
を使わなくてもいいようになりました.
最後に, PHPは最高ですね.
既存のライブラリにマルチバイト周りをASCIIに変換する部分だけのPRでも作る?