-PR-
解決済み

全角、半角の判別

  • 暇なときにでも
  • 質問No.61997
  • 閲覧数784
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 86% (13/15)

なげられてきた値が全角の場合にエラーをだしたいので
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
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

半角文字が・・・とおっしゃられてますが、半角文字自体の定義が結構曖昧です。
表示上で半角表示されても、実際の文字コード上では2バイト文字の場合もありますので・・・
実際、EUCでは半角カナも2バイトコードに割り当てられるようですし、UTF8では当然のごとく2バイト使用します

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

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

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

お礼率 86% (13/15)

レスありがとうございます。
早速おしえていただきました方法で試したいと思います。
# i18n_convertの第2引数を変更
if(!mbereg("^[A-Za-z0-9ア-ン]+$", i18n_convert($string, "EUC"))
{
# 半角以外の文字が存在した場合の処理
}
のmberegの因数がチェックする文字列になるのですね。
文字コードを眺めながらいろいろ試そうと思います。
ありがとうございました。
投稿日時 - 2001-04-12 09:49:34
このQ&Aで解決しましたか?
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ