PHPで入力した文字を調べる方法


POSTされてきたテキストの中に「半角英数字以外」の文字が含まれている場合に「TRUE」を出したいと考えております。
どのようにすればよろしいでしょうか?
合わせて「false」を返す方法も教えていただければ嬉しいです。よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2007/04/07 17:38:49
  • 終了:2007/04/07 18:41:57

回答(2件)

id:studioes No.1

studioes回答回数522ベストアンサー獲得回数612007/04/07 17:47:50

ポイント24pt

//true

preg_match('/[^a-zA-Z0-9]/',$text);

//false

!preg_match('/[^a-zA-Z0-9]/',$text);

id:t_yasu

ありがとうございます。

早速試してみたのですが思うようにいきません。

どこが他のところがおかしいのでしょうか?

$moji = "はてな";

switch ($moji) {



case preg_match('/[^a-zA-Z0-9]/',$moji):

print "半角英数字で入力してください";

break;

case (strlen($moji) < "4")://4文字以上の判定

print "ユーザーIDは4文字以上にしてください";

break;

case (strlen($moji) > "12"):

print "ユーザーIDは12文字以内にしてください";

break;

default://全ての条件を満たした時の処理

print "ユーザーIDは正しく入力されています";


break;

}

?>

2007/04/07 18:04:49
id:GEN111 No.2

GEN111回答回数472ベストアンサー獲得回数582007/04/07 18:32:01

ポイント46pt
// true
!preg_match('/^[\w\d]+$/', $moji) ;

// false
preg_match('/^[\w\d]+$/', $moji) ;

これでは?

id:t_yasu

ばっちりです!

有り難うございました!

2007/04/07 18:40:53
  • id:kurukuru-neko
    >半角英数字以外

    入力に漢字があった場合、文字化けなどの
    事を考慮すると mb_ereg_matchを
    利用も検討の価値があります。

    ctype_alnum
    http://jp2.php.net/manual/ja/function.ctype-alnum.php
    mb_ereg_match
    http://jp2.php.net/manual/ja/function.mb-ereg-match.php

    mb_convert_kana
    http://jp2.php.net/manual/ja/function.mb-convert-kana.php

    <?php
    function show_encoding() {
    print "-----------------------------\n";
    print "mb_language=" . mb_language() . "\n";
    print "mb_internal_encoding=". mb_internal_encoding() . "\n";
    print "mb_regex_encoding=" . mb_regex_encoding() . "\n";
    print "-----------------------------\n";
    };
    show_encoding();

    mb_language("japanese"); // PHPのメールのエンコーディング指定
    mb_internal_encoding("EUC-JP"); // PHPのスクリプトの文字コード
    mb_regex_encoding("EUC-JP"); // PHPの正規表現の文字コード指定

    show_encoding();

    // 対象文字列.
    $str = "01漢字まじり3ABCabc ";
    print "STR='" . $str . "'\n";

    // 全角の英数、空白を半角に変換する.
    $strc= mb_convert_kana($str,"as");
    print "STRC='" . $strc . "'\n";

    // 前後の空白を取り除く.
    $strc= trim($strc);
    print "TRIM STRC='" . $strc . "'\n";
    print "文字数=" . mb_strlen($strc) . "\n";
    print "文字数(byte)=" . strlen($strc) . "\n";

    print "---------- ctype ---------\n";
    if( ctype_alnum($strc) ) {
    print "英数\n";
    } else {
    print "英数以外の文字があります\n";
    };

    // 判定条件を逆に変更
    print "---------- !ctype ---------\n";
    if( !ctype_alnum($strc) ) {
    print "英数以外の文字があります\n";
    } else {
    print "英数\n";
    };

    // 正規表現で英数の判定.
    print "---------- ereg_match ---------\n";
    if( mb_ereg_match("^[a-zA-Z0-9]+$",$strc) ) {
    print "英数\n";
    } else {
    print "英数以外の文字があります\n";
    };

    // 正規表現で英数の判定. 判定条件を逆にする
    print "---------- !ereg_match ---------\n";
    if( !mb_ereg_match("^[a-zA-Z0-9]+$",$strc) ) {
    print "英数以外の文字があります\n";
    } else {
    print "英数\n";
    };


    ?>
  • id:t_yasu
    色々と追加していただき有り難うございます。
    判定するだけでも奥が深いですね〜。

    すぐには理解できないかも知れませんが
    少しずつ勉強させていただきます。
    本当にありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません