それはあなたが必要なものに依存したり、本当に、あなたのアプリケーションに適しています。それを検証し、「はい、これは有効な浮動小数点です」と言うでしょうが、もう一方は許容できない値でそれをクリーンアップして返しますが、元の入力が有効だった場合は何も言わないでしょう始めることはありません。
同じことが他のFILTER_SANITIZE_*
とFILTER_VALIDATE_*
定数のために適用されますが、元の質問に尋ねたように、この例では、我々は、浮動小数点の検証と衛生を見てみましょう。
見てみましょう!
$float = 0.032;
$not_float = "0.03b2";
var_dump(filter_var($float, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
var_dump(filter_var($not_float, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
var_dump(filter_var($float, FILTER_VALIDATE_FLOAT));
var_dump(filter_var($not_float, FILTER_VALIDATE_FLOAT));
上記ダンプから復帰(PHPは、強く型付けされた言語ではないので、"0.032" == 0.032
)消毒値の列を返す
string(5) "0.032" // $float FILTER_SANITIZE_NUMBER_FLOAT
string(5) "0.032" // $not_float FILTER_SANITIZE_NUMBER_FLOAT
float(0.032) // $float FILTER_VALIDATE_FLOAT
bool(false) // $not_float FILTER_VALIDATE_FLOAT
FILTER_SANITIZE_NUMBER_FLOAT
あろう。
小数点をそのまま保持するFILTER_FLAG_ALLOW_FRACTION
フラグにも注意してください(そのフラグがないと、0032
が返されます)。
ご覧のとおり、FILTER_VALIDATE_FLOAT
は有効な浮動小数点数でない場合はブール値false
を返し、有効な場合(実際の値)は実際の浮動小数点数を返します。 0.00
は "偽の"値なので、の検証でが失敗したかどうかを確認するには、入力が0の場合でも厳密な比較を使用する必要があります。
if (filter_var($input, FILTER_VALIDATE_FLOAT) === false) {
// Oh noes! $input wasn't a valid float!
}
これはlive demoでご覧になれます。あなたは計算にそれを使用したい場合は、あなたが検証にそれをしたい、そしてユーザーがそのその無効な形式を知っているが、あなたはそれがをサニタイズし、とにかくそれを使用することができますせていただく場合があります
を締結する
。
まあ、それを検証したいのですか、それとも消毒しますか? – Qirel
私はそれが数字であることを確かめるデータを計算したい、他のタイプではない。 – spectatorx