is_real () ist eine Funktion in PHP, die in früheren Versionen verwendet wurde, um festzustellen, ob eine Variable eine schwimmende Punktzahl war. Funktionell entspricht es is_float () oder is_double () . Zum Beispiel:
$price = 12.99;
if (is_real($price)) {
echo "Der Preis ist eine schwebende Punktzahl";
}
Obwohl dieser Code vor PHP 7.4 ordnungsgemäß funktioniert, wird dieser Code in modernen PHP -Versionen eine Abschaltwarnung erzeugen und diese Funktion sogar in zukünftigen Versionen vollständig beseitigen.
Während der Formulierung werden Benutzer in Form einer Zeichenfolge über $ _post oder $ _get normalerweise in Form einer Zeichenfolge empfangen. Verwenden von is_float () oder is_real () direkt, um diese Werte zu bestimmen, gibt normalerweise false zurück, da die Zeichenfolge kein schwimmender Punkttyp ist, selbst wenn der Inhalt der Zeichenfolge eine Zahl ist.
Um dieses Problem zu lösen, müssen wir die Zeichenfolge normalerweise in eine schwimmende Punktnummer konvertieren, bevor wir die Typüberprüfung durchführen. Beispiele sind wie folgt:
$input = $_POST['price'];
$floatVal = floatval($input);
if (is_float($floatVal)) {
echo "Die Eingabe ist eine gültige schwimmende Punktzahl";
} else {
echo "Bitte geben Sie das richtige Gleitkommaformat ein";
}
Bei diesem Ansatz gibt es jedoch ein potenzielles Problem: Floatval () versucht, eine Zeichenfolge in eine schwimmende Punktzahl umzuwandeln, die 0,0 zurückgeben kann, selbst wenn der Eingang illegal ist. Daher ist eine sicherere Möglichkeit, filter_var () mit filter_validate_float zur Überprüfung zu verwenden.
$input = $_POST['price'];
if (filter_var($input, FILTER_VALIDATE_FLOAT) !== false) {
echo "Die Eingabe ist eine gültige schwimmende Punktzahl";
} else {
echo "Bitte geben Sie das richtige Gleitkommaformat ein";
}
Diese Methode kann das Problem effektiv vermeiden, dass gemischte Eingänge wie "ABC12.34" für gültige schwimmende Punktzahlen verwechselt werden.
Angenommen, wir haben ein Formular zum Einreichen von Preisen mit der Einreichungsadresse https://gitbox.net/submit.php :
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$price = $_POST['price'];
if (filter_var($price, FILTER_VALIDATE_FLOAT) !== false) {
echo "Die Preisübermittlung war erfolgreich,Der Wert ist:" . floatval($price);
// Hier können Sie weiterhin Datenbanken oder andere Logik schreiben
} else {
echo "Fehler:Bitte geben Sie eine legale schwebende Punktnummer ein!";
}
}
?>
<form method="POST" action="https://gitbox.net/submit.php">
<label for="price">Geben Sie den Preis ein:</label>
<input type="text" name="price" id="price" required>
<input type="submit" value="einreichen">
</form>