[PHP-dev 510] [RFC] Introducing more consistent stuff - mb_translit()

Moriyoshi Koizumi php-dev@php.gr.jp
Sat, 28 Sep 2002 07:04:54 +0900


小泉です。

先日 Wez さんが、UCDATA (http://crl.nmsu.edu/~mleisher/ucdata.html) を元に、
case folding 用の関数 mb_convert_case を実装して、
本家の方のコードにコミットしたようですが、
この関数を使うと、全角のアルファベットやギリシャ文字も変換できるようです。
この機能は、mb_convert_kana() に持たせてもおかしくないものだと思います。

そこで、mb_convert_kana() と mb_convert_case() の機能を統合し、
mb_translit() という関数を新設するのはいかがでしょうか。
なお、これは、両関数を deprecate する意図のものではありません。

こちらのリストのみなさんの意見を聞いたうえで、本家 dev の方に投げるつもり
でいます。よろしくお願いします。

--------------------------------------------------------------------------
proto string mb_translit( string str, int mode [, string encoding]);

文字列 str を mode で指定された方法で変換し、その結果を返します。
文字集合の制約により変換できない文字は変換されません。

mode に指定できるフラグ(ビットマスク)として、以下のようなものを提案します。
(以下の表は等幅フォントで見ることを前提に作成しています。)

[注意]
・大文字 / 小文字の区別がある文字集合は、ラテン文字、キリル文字、ギリシャ
文字、アルメニア文字の4種です。
・「半角アルファベット」は U+0041 - U+005A, U+0061 - U+007A の範囲にある文
字を意味するものとします。
・「全角アルファベット」は U+FF21 - U+FF3A, U+FF41 - U+FF5A の範囲にある文
字を意味するものとします。

MB_CASE_UPPER             小文字を大文字に変換
MB_CASE_LOWER             大文字を小文字に変換
MB_CASE_TITLE             単語の先頭文字だけを大文字に変換
MB_WIDTH_HF_ALPHA         半角アルファベットを全角にする
MB_WIDTH_FH_ALPHA         全角アルファベットを半角にする
MB_WIDTH_HF_NUM           半角数字を全角にする
MB_WIDTH_FH_NUM           全角数字を半角にする
MB_WIDTH_HF_SIGN          半角記号を全角にする
MB_WIDTH_FH_SIGN          全角記号を半角にする
MB_WIDTH_HF_SPACE         半角スペースを全角にする
MB_WIDTH_FH_SPACE         全角スペースを半角にする
MB_WIDTH_HF_KANA          半角カタカナを全角にする
MB_WIDTH_FH_KANA          全角カタカナを半角にする
MB_COLLAPSE_VOICE_MARK    濁点・半濁点を縮める
MB_EXPAND_VOICE_MARK      濁点・半濁点を展開する
MB_COLLAPSE_PARENTHESIZED カッコつきの文字を一文字に縮める
                          (CP932,MAC-SJIS,KSC5601,GB2312,BIG5 など)
MB_EXPAND_PARENTHESIZED   カッコつきの文字を複数の文字に展開する
                          (CP932,MAC-SJIS,KSC5601,GB2312,BIG5 など)
MB_DECIRCLE               丸つきの文字を普通の文字に変換
                          (CP932,MAC-SJIS,KSC5601,GB2312,BIG5 など)
MB_ENCIRCLE               普通の文字を丸つきの文字に変換
                          (CP932,MAC-SJIS,KSC5601,GB2312,BIG5 など)
MB_EXPAND_KUMIMOJI        組み文字(ヘクタール,平方メートルなど)を
                          複数の文字に変換 (CP932, MAC-SJIS)
--------------------------------------------------------------------------