[PHP-users 1323] Re: 全角カナの確認

Osamu Shigematsu php-users@php.gr.jp
Tue, 21 Aug 2001 16:08:13 +0900


重松です。

> あとは、データを保存するのに半角カナがいやだと言う理由であれば、
> mb_convert_kanaを使って全角に変換すると言う手もあります。
> 
> ex) $converted_string=mb_convert_kana($string,"aK","SJIS");

私もこれに一票。

でも、元々の質問の方の正規表現を見るとフリガナが正しく入力されているか確認し
ているように見受けられたました。なので、「記入は全角カタカナでお願いします」
とかいてあったりして、ひらがなだとエラーになるようなヘボスクリプトにしないた
めにも、

// V がないと、濁点や半濁点が分割されたままになる
$p_rubi = mb_convert_kana($p_rubi,"asKV");
if(!mbereg("^[0-9A-Za-zァ-ヶ\s]*$",$p_rubi)){
    die("使えない文字を発見");
}

とするのがよろしいのではと。

というか、いままで i18n_ja_jp_hantozen() 使ってたんですけど、
mb_convert_kana() だと、"s" で 2 バイトスペースも 1 バイトにできるので、便利
そうです。:-)

/*
でも、mb って multi-byte のことだと思うんですが、何で「全角」だとか「半角」
という表現なのか不思議です。

また、convert_kana なんて言う名前にしてしまうと、カナしか変換できないような
イメージがありませんか? mb_translitarate_string とかすれば、カナをローマ字に
したり(あるいはその逆)も意味に含みますし、ヘブライ語を英字に訳したり、簡体字
をピンインにしたり、なんてのも translitarate だから、i18n な名前だと思うんで
すけどね。。。
*/

-- 
Osamu Shigematsu

http://www.ravi.ne.jp/
mailto:shige@ravi.ne.jp