Perlで半角のカタカナ・漢字・平仮名をチェックするには?
[上に]
[前に]
[次に]
まる
[E-Mail]
1999/03/26(金) 13:10:59
現在、ホームページから入力してもらったデータをDBに保存する
CGIプログラムをPerlで作成しています。
入力してもらう日本語データのみを全角に統一し、半角の日本語データを入力した場合は、エラー表示したいのですが、半角日本語データを
検出する方法がありますか?
良い方法があったら教えてください。
通り掛かり
1999/03/27(土) 18:42:04
緊急回避ですよ?
jcode.plを使って、h2zで全角に変換、
元データと比較して違ってたらはじく。
漢字・平仮名まではじきたければ素直に
=~ /[A-Za-z0-9 ]*$
↑
この後考えられる記号を全部列記
jcode.plのh2zって、ちょっと動作があやしいので、
本来変換したい文字列に、日本語文字列をちょこっと
くっつけて変換しないと駄目かな?。
Aurai
[E-Mail]
1999/03/28(日) 07:03:54
$str がチェックする文字列
漢字コードはSJISとします
if ((" ".$str) =~ /[^\x81-\xFF][\xA0-\xDF]/) {
print "半角カタカナ発見";
}
これで大丈夫だと思います
mo
[E-Mail]
1999/03/28(日) 17:34:13
> jcode.plのh2zって、ちょっと動作があやしい。
・半角カタカナのみから成り立つ SJIS 文字列は EUC であると誤認式する確率が高い。
・SI/SO (ascii 0x0f/0x0e) の半角カタカナを認識しない。
という不都合があります。
通りがかり
1999/03/28(日) 21:57:58
moさん、jcode.plの不都合の指摘、どうもありがとうございました。
日本語を付加してから変換というのは最初の、半角カタカナに
ひっかかってたんですね。納得。
[上に]
[前に]
[次に]