PHP: Prüfen ob ein String eine Float-Zahl enthält


Datum: 24.07.2019 22:42

In PHP gibt es die Funktion is_float() um zu überprüfen, ob eine Variable vom Typ Float ist.

Während is_numeric() prüft, ob eine Variable, auch ein String, numerisch ist, gibt es in PHP keine Funktion, welche Prüft, ob ein String einer Float Zahl entspricht.

Google angeworfen. Stackoverflow gefunden.

Einige Leute dort haben Lösungen mit Rundungsfunktionen vorgeschlagen, andere sogar reguläre Ausdrucke!

Leider geben die am besten bewerteten Funktionen dort bei Strings wie "1.00" ebenfalls false zurück, was ich nicht möchte.

Nach einiger Recherche bin ich auf die Funktion ctype_digit() in der PHP-Standardlib gestoßen.

Habe darauf hin folgenden kleinen Einzeiler geschrieben, welcher genau so funktioniert wie von mir benötigt.

<?php 
// Prüft ob eine Variable eine Float-Zahl enthält
// Funktioniert jedoch im Gegensatz zu is_float() auch mit Strings, welche Zahlen enthalten.
function is_decimal($val): bool {
    return 
is_numeric($val) and ! ctype_digit(strval($val));
}
is_decimal("0.00"); // true
is_decimal("1.00"); // true
is_decimal("1.99"); // true
is_decimal(1.00); // true
is_decimal(1.99); // true
is_decimal("keine Zahl"); // false
is_decimal("123"); // false
is_decimal(0); // false
is_decimal(123); // false

Kommentare

Name: *  
Homepage:  
Email: *  

 Ich habe die Datenschutzerklärung zur Kenntnis genommen. Ich stimme zu, dass meine Angaben und Daten zur Beantwortung meiner Anfrage elektronisch erhoben und gespeichert werden. Hinweis: Sie können Ihre Einwilligung jederzeit für die Zukunft per E-Mail an daten-entfernen@deruli.de widerrufen.

Es sind bisher noch keine Kommentare zu diesem Artikel vorhanden.

Don't click this link