プロが教える店舗&オフィスのセキュリティ対策術

なげられてきた値が全角の場合にエラーをだしたいので
PHPにて全角、半角のチェックを行いたいのですが
なにか便利な関数などあるのでしょうか?
また、どのような処理をすればいいのでしょうか?
単純に全角を半角に変換してくれる
i18n_ja_jp_hantozenを使うことも考えましたが
全角の特殊文字などの場合に文字化けを起こす可能性もあると思い
なんとかエラー表示させたく質問させていただきました。
よろしくご教授ください。


環境:
RedhatLinux6.2J
apache-1.3.12-0jp1
php-3.0.15_i18n_ja-0vl2
postgresql-7.0.2-2.i386

A 回答 (1件)

半角文字が・・・とおっしゃられてますが、半角文字自体の定義が結構曖昧です。


表示上で半角表示されても、実際の文字コード上では2バイト文字の場合もありますので・・・
実際、EUCでは半角カナも2バイトコードに割り当てられるようですし、UTF8では当然のごとく2バイト使用します

んで、とりあえず、どんな文字であれ、バイト列には変わり無いわけなんで・・・

# ソースコードはEUCで保存。別の文字コードで保存する場合は
# i18n_convertの第2引数を変更
if(!mbereg("^[A-Za-z0-9ア-ン]+$", i18n_convert($string, "EUC"))
{
# 半角以外の文字が存在した場合の処理
}

こんな感じで通らないでしょうか?
mberegの第一引数は適当に決めたので漏れがたっぷりあると思いますので、文字コード表を参照して適当に埋めてください
    • good
    • 0
この回答へのお礼

レスありがとうございます。
早速おしえていただきました方法で試したいと思います。
# i18n_convertの第2引数を変更
if(!mbereg("^[A-Za-z0-9ア-ン]+$", i18n_convert($string, "EUC"))
{
# 半角以外の文字が存在した場合の処理
}
のmberegの因数がチェックする文字列になるのですね。
文字コードを眺めながらいろいろ試そうと思います。
ありがとうございました。

お礼日時:2001/04/12 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!