2017-12-25 11 views
0

以下のコードでは、データベースのIDが数値であるかどうかを制御しています。私の問題は次のとおりです。idをテストする正規表現は、idが数字であっても、常にnummber 0に戻ることはありません。preg_matchは常に0を返します

これを解決するお手伝いをしてもらえますか?

これが問題とコードです:

$muster = "|^[0-9]+$|"; 
if(preg_match($muster, $_POST["Anzahl"]) == 0 || preg_match($muster, $_POST["id"]) == 0 || $_POST["Anzahl"] < 1) { 
    die("<a href='javascript:history.back()'>Eingabe überprüfen</a>"); 
} 
+1

これらの '|'はスラッシュ '/'でなければなりません。パイプは、括弧 '()'の中で使用されるとき、 'or'演算子です。あなたはhttps://regex101.com/のような正規表現テスターを試してみることができます。それは素晴らしい詳細を提供します。 –

+0

問題はidチェックだけです:preg_match($ muster、$ _POST ["id"])== 0 これは動作しません。他のものは動作します... – pipafria

答えて

0

私はより簡単に、より便利PHPValidateフィルタに

そのを使用します。

<?php 
    $str = "100"; 

    if (filter_var($str, FILTER_VALIDATE_INT)) { 
     echo("Variable is an integer"); 
    } else { 
     echo("Variable is not an integer"); 
    } 
?> 

filter_var(($str, FILTER_VALIDATE_INT))が成功した場合、それはとして100を返します。整数、そうでない場合は偽

Btwあります多くの便利なフィルタ:http://php.net/manual/de/filter.filters.validate.php

+0

偉大な、働いた!驚くばかり!!!ありがとうございました! – pipafria

+1

'filter_input'は' $ _POST'にもっと適しています。 –

関連する問題