IS_REAL()は、変数が浮動小数点数であるかどうかを検出するために以前のバージョンで使用されたPHPの関数です。機能的には、is_float()またはis_double()に相当します。例えば:
$price = 12.99;
if (is_real($price)) {
echo "価格は浮動小数点数です";
}
このコードはPHP 7.4の前に適切に機能しますが、このコードを最新のPHPバージョンで実行すると、非推奨警告が生成され、将来のバージョンでこの機能を完全に削除します。
フォーム処理中、ユーザーがサビされたデータは通常、 $ _POSTまたは$ _GETを介して文字列の形式で受信されます。 is_float()またはis_real()を使用して、これらの値を決定するために直接これらの値を決定すると、文字列のコンテンツが数字であっても、文字列が浮動小数点タイプではないため、通常はfalseを返します。
この問題を解決するには、通常、型検証を実行する前に、文字列を浮動小数点数に変換する必要があります。例は次のとおりです。
$input = $_POST['price'];
$floatVal = floatval($input);
if (is_float($floatVal)) {
echo "入力は有効なフローティングポイント番号です";
} else {
echo "正しいフローティングポイント形式を入力してください";
}
しかし、このアプローチには潜在的な問題があります。Floatval ()は、任意の文字列をフローティングポイント番号に変換しようとします。これは、入力が違法であっても0.0を返す可能性があります。したがって、検証のためにFilter_Validate_Floatを使用してFilter_Var()を使用するより安全な方法です。
$input = $_POST['price'];
if (filter_var($input, FILTER_VALIDATE_FLOAT) !== false) {
echo "入力は有効なフローティングポイント番号です";
} else {
echo "正しいフローティングポイント形式を入力してください";
}
この方法では、「ABC12.34」などの混合入力が有効な浮動小数点数と間違えられているという問題を効果的に回避できます。
提出アドレスhttps://gitbox.net/submit.php :を提出するためのフォームがあるとします。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$price = $_POST['price'];
if (filter_var($price, FILTER_VALIDATE_FLOAT) !== false) {
echo "価格の提出は成功しました,値はです:" . floatval($price);
// ここでは、データベースやその他のロジックを作成し続けることができます
} else {
echo "間違い:合法的な浮動小数点番号を入力してください!";
}
}
?>
<form method="POST" action="https://gitbox.net/submit.php">
<label for="price">価格を入力します:</label>
<input type="text" name="price" id="price" required>
<input type="submit" value="提出する">
</form>