- 締切済み
PHP 正規表現 数字又は数字以外を判別
下記コードですが、 「数字以外が含まれています。」と表示されるはずなのに「数字です。」と表示されてしまいます。どこがおかしいかお分かりの方おられますか? $num1 ="123"; $num2 ="a"; $num3 ="123"; if($num1 != "" or $num2 != "" or $num3 != "") { if($num1 == "" or $num2 == "" or $num3 == "") { if(!ereg("^[0-9]+$", $num1) or !ereg("^[0-9]+$", $num2) or !ereg("^[0-9]+$", $num3)) { print "数字以外が含まれています。\n"; } } } else { print "数字です。\n"; }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- wp_
- ベストアンサー率54% (132/242)
回答No.3
- wp_
- ベストアンサー率54% (132/242)
回答No.2
- himajin100000
- ベストアンサー率54% (1660/3060)
回答No.1
お礼
wp_さん >$num1,$num2,$num3 >と >$num4 >で分けて考えるべきです。 $num1,$num2,$num3と$num4の判定結果「echo "正常";」又は「echo "error";」は、ばらばらに出力せずに一まとめにしたいのですが。 つまり下記の条件を一まとめにして >1)まず、この電話番号入力欄は入力しても空欄でもよい。 >2)ただし、$num1、 $num2又は$num3の一つにでも入力した場合は、他の二つにも(たとえば、$num1に入力した場合には$num2及び$num3にも)必ず入力しなければならない。 >3)$num4は空欄でも入力しても良いが、$num4を入力する場合は必ずnum1、 $num2及び$num3が入力されている必要がある。 >4)num1、 $num2、$num3及び$num4に入力がある場合は、数字のみ可能。 一度だけ、「echo "正常";」又は「echo "error";」を出力したいわけです。(num1,$num2,$num3で、「echo "正常";」又は「echo "error";」の判定結果を出力、そして、別途、$num4で、「echo "正常";」又は「echo "error";」の判定結果を出力とはしたくないわけです。)
補足
wp_さん ご回答ありがとうございました。 >読んだ限り、1,2,3と4の間に関係は無さそうですね。 1,2,3と4の間に関係はあります。 関係は以下です。 3)$num4は空欄でも入力しても良いが、$num4を入力する場合は必ずnum1、 $num2及び$num3が入力されている必要がある。 つまり、 この場合、「echo "error」としたい。 $num1 = 空欄 $num2 = 空欄 $num3 = 空欄 $num4 = 101