4

フォームの URL またはフォームから入力された日付を検証するには、通常どの手法を使用しますか?

私はPHPフィルターを見てきましたが、どのコードでもめったに見ません。

私は通常 preg_mach の使用を見てきました。例えば:

$numbers = "/^[0-9]+$/D";

if (preg_match($numbers, $var)){
    echo "is number";
}

それ以外の:

if(!filter_var($var, FILTER_VALIDATE_INT))
    echo "is number";
}

どちらかを使用する利点はありますか?ありがとう!

4

4 に答える 4

4

私の 2 セント:それは依存します。

正規表現に対してフィルター関数を使用する必要があるかどうかは、状況によって異なります。実際、基準は非常に単純です。

私が期待している種類の入力を正確filter_*に検証する関数はありますか?

  • その場合は、そのfilter_*機能を使用してください。
  • それ以外の場合は、正規表現を使用してください。

正規表現は関数よりも複雑ですが、 と 正規表現filter_*の機能filter_*は非常に緩やかに相関しています。ほとんどの場合、正規表現は関数の仕事をするように作成できますがfilter_*、その逆は機能しません。そのため、正規表現は機能性と柔軟性を向上させますが、より複雑でもあります。

個人的には、単純な入力 (整数、日付、時刻) を扱うときはfilter_*関数を使用しますが、より複雑な入力、または非常に具体的な入力やカスタム入力 (文字で始まり文字で終わり、間に 3 桁のカスタム識別子) を使用する場合は、関数を使用します。正規表現に適しています。

于 2012-07-19T20:36:19.487 に答える
3

Php は、php 5.2 以降、さまざまなタイプの変数検証用に filer_ 機能を導入しました。filter_var ||を使用することをお勧めします。あなたのニーズに合わせてfilter_input 。

より安全であるという事実に加えて、正規表現に頭を悩ませていた多くの開発時間を節約することにもなります。

于 2012-07-19T20:28:35.923 に答える
1

どちらも同じことを行っていますが、フィルターを使用する方が簡単で使いやすいオプションのようです。必要に応じて、値の範囲を使用することもできます。

ただし、有効な数値をチェックするだけで、文字列を含むもう少し複雑なことをしたい場合は、正規表現を使用することをお勧めします。

于 2012-07-19T20:32:24.170 に答える
1

必ずフィルターを使用する必要があります。これは、検証用に特別に作成されています。正規表現は常にカスタムであり、自分で記述した場合、チェックが必要な多くのことを忘れてしまう可能性があります。

于 2012-07-19T20:21:12.650 に答える