[PHP-users 4809] Re: 半角英数文字と全角文字を判断したい

Y.Watanabe php-users@php.gr.jp
Fri, 18 Jan 2002 10:56:28 +0900


> ■使用環境■
> OS           : Windows98
> WEBサーバ    :FreeBSD / Apache
> PHP          :PHP3
> ブラウザ     :IE6
> 
> ■質問内容■
> 入力フォームを作成する時に入力された文字が半角英数文字か?
> 全角文字か?を判断したいのですがどのようにしたら良いのでしょうか?
> 何か関数がありますか?
> 
> if("文字を判断するモノ"){
>  echo "半角英数文字が入力されました。";
> }
> else{
>  echo "全角文字が入力されました。";
> }

他の方も言っているようにregexやmbregexなどを使うのが本道ですよね。

PHP3なのでmbregex(マルチバイト関数)は無理なんだろうか?
昔の国際化関数がつかえればそれでよいですが。

PHP4にあげたようが良いと思うけどなー。

わたしはPHP4にmbregex拡張を加えて使てます。
正規表現関数を使うには当然正規表現の知識が必要です。
正規表現書くのってコツが要りますし面倒なので
convertする関数を使ってたとえば下記のようなことも可能です。

$str = "123";
if ( mb_convert_kana($str,"n") != $str ) { echo "全角数字はいってるよ!"; }

詳しくは
http://www.php.net/manual/ja/function.mb-convert-kana.php

Web上の入力フォームで、例えば
「郵便番号の入力欄に全角数字で入力させたくない」
といった場合には、HTMLタグとして
<input name="yubin" type="text" size="7" 
 maxlength="7" style="ime-mode:disabled;">
と書くことによってIMEが強制的にオフになるので全角数字が
入力される可能性が少なくなります。
ただしIE5.0以上(だったかな)にのみ有効であってネスケなどには
このワザはあまり意味ないかも。

# わざわざムツカシイことしないで使えるPHP関数やHTMLタグは使おう!