• ベストアンサー

7桁の半角数字かどうかのチェック

初歩的な質問で失礼ですが if (ereg("([0-9]{7})",$str)) { $strが7桁の数字であるときの処理 } else { $strが7桁の数字でないときの処理 } でうまく動作しません。 何が悪いんでしょうか。eregですか?{7}ですか?それとも俺の頭ですか?

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

  • ベストアンサー
noname#18290
noname#18290
回答No.1

> 何が悪いんでしょうか。eregですか?{7}ですか?それとも俺の頭ですか? eregと、貴方の頭かな(笑) 冗談なので無視してください :) $str1 = '123456'; $str2 = '1234567'; $str3 = '12345678'; $str4 = '1234567abc'; $str5 = 'ABC1234567abc'; $str2から$str5は全てeregにマッチします。 ちゃんと判定するには、 if (strlen($str) == 7 && ctype_digit($str) {  //真の時の処理 } else {  //偽の時の処理 } かな。

その他の回答 (2)

noname#18290
noname#18290
回答No.3

括弧が閉じてなかったので訂正します 誤 if (strlen($str) == 7 && ctype_digit($str) { 正 if (strlen($str) == 7 && ctype_digit($str)) { どうしてもeregを使いたければ >if (ereg("^([0-9]{7})$",$str)) { とすればよろしいかと思います。

noname#15014
質問者

お礼

ereg使わなくても出来ることに気が付かなかったです… やっぱり悪いのは俺のあた(略 ありがとうございました。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

別に if (ereg("^[0-9]{7}$",$str)) { でよいのでは?

noname#15014
質問者

お礼

正規表現勉強しなきゃ駄目ですね。 ありがとうございました。

関連するQ&A