![]() |
カレッヂ |
質問者 ひまわり
投稿日 3/1(金) 20:46:41
初めて質問をさせていただきます。 フォームから入力した文字種のチェックをするコードを書いています。 以下は、氏名を入力する欄 $form{firstname_kana} の内容が "半角文字だったらエラー"とするつもりで書いたコードです。 しかし、実際に動かしてみると、全角文字を入力してもエラーになって しまいます。コードはIMEパッドの「シフトJIS」からもってきました。 原因がおわかりでしたらご教示いただければ幸いです。 &jcode'convert(*form,'sjis'); (途中略) if($form{firstname_kana} =~ /[\x20-\xff]/){ $f_error = 1; } |
回答者 しあわせのツボ
[削除]
投稿日 3/7(木) 02:33:10
SJISは2バイト目にASCIIと重複するコードがあるためです。 回避策は…EUCに変換してからチェックするとかでしょうか。 |
回答者 みみみ
[削除]
投稿日 3/7(木) 14:04:43
if($form{firstname_kana} =~ /[\x20-\xff]/){ の部分を if($form{firstname_kana} =~ /[\xA6-\xDF]/){ に変えればどうでしょう。 |
質問者 ひまわり
[削除]
投稿日 3/7(木) 14:53:25
しあわせのツボさん、みみみさん、御回答ありがとうございました。 しあわせのつぼさん: >SJISは2バイト目にASCIIと重複するコードがあるためです。 >回避策は…EUCに変換してからチェックするとかでしょうか。 そういうことなのですか・・・・。SJISでの文字種チェックは難しいのですね。 でも原因がわかってよかったです。ありがとうございました。 みみみさん: >if($form{firstname_kana} =~ /[\x20-\xff]/){ >の部分を >if($form{firstname_kana} =~ /[\xA6-\xDF]/){ >に変えればどうでしょう。 おしえていただいた通りにやったら、半角カナはエラーとすることができました。 半角数値や記号までもエラーにしたかったのですが、ちょっと欲張りすぎたでしょうか。 教えていただいたコードでやってみようと思います。 どうもありがとうございました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |