0

こんにちは、投稿値があり、投稿されているかどうかを確認しています。少なくとも4つの数字(数字)があり、これは完璧に機能します。

if (isset($_POST['year']) && 
      !preg_match('/([0-9]{4})/i', stripslashes(trim($_POST['year']))) ) {

今、私は値が大きいか=変数に等しいことを確認したいのですが、必要なものを達成する方法がわかりません

私は運がないので以下を試しました

$yearOff = date("Y")-150;
echo $yearOff;


    if (isset($_POST['year']) && 
            !preg_match('/([0-9]{4})/i', stripslashes(trim($_POST['year']))) 
            && $_POST['year'] > $yearOff ) {

                   $ageerrors[] = '<span class="error">
                                      You forgot enter your birth YEAR</span>';
    }
4

2 に答える 2

2

可能性のある 3 つの無効な状態 (空、4 桁以上ではない、&&または:||<= $yearOff

if (!isset($_POST['year'])
   // Lose the stripslashes()...
   || !preg_match('/([0-9]{4})/i',trim($_POST['year']))
   || $_POST['year'] > $yearOff 
   ) {
    // Invalid...
}

注:値を にしたいのか、 にしたいのか、説明からは明らかではありませ>= $yearOff< $yearOff。つまり、上記のコードは無効な状態をテストしています。無効な状態に適した演算子を使用してください。

注 2:正規表現で少なくとも 4 桁連続しているかどうかをテストするには、より適切なパターンは次のようなものです。

/\d{4,}/
// If it must be *only* digits and no other characters, anchor with ^$
/^\d{4,}$/

()キャプチャ グループのオーバーヘッドは必要ありません。

于 2012-08-10T14:23:21.803 に答える
1
$yearOff = date("Y")-150;
echo $yearOff;

$input = @$_POST['year'];

if (!$input || strlen($input) !== 4 || $input < $yearoff) {
    ### MEEEP, ERROR ###
}

説明:

入力が設定されている ( nullfalse ではない) 場合、文字列の長さは 4 で、最後に数値はそれ以上である必要があります$yearOff

から一度だけ取得する必要があるため、入力の値を独自の変数にも割り当てました$_POST

これらの条件はすべて否定されるため、 or||演算子を使用しました。当然のことながら、同じことを否定せずに and で表現できます。

if ($input && strlen($input) === 4 && $input >= $yearoff) {
    ### THIS IS CALL OKAY ###
}

これをより適切にデバッグするために、次のステップでは変数にも有効性を割り当てます。

$inputValid = $input && strlen($input) === 4 && $input >= $yearoff;
if (false === $inputValid) [
    ### MEEP, ERROR ####
}  

これが役に立てば幸いです。

于 2012-08-10T14:24:13.770 に答える