[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)
--------------------------------------------------------------------------