is_int() funktioniert nicht?
Echt Holler
- php
Krüäzi
Ich habe ein Textfeld in das eine ganze Zahl, also zb 7, eingegeben wird.
Wenn ich dann mit is_int() prüfen will ob es ein Integer ist, funktioniert das nicht:
if (!is_int($zahl)) {
print "Das ist keine ganze Zahl!";
}
Es gibt mir immer die Fehlermeldung aus, obwohl es das nicht dürfte.
Was mache ich da falsch? :(
Hallo,
Was mache ich da falsch? :(
Ganz einfach:
is_int(7) => true
is_int('7') => false
is_int prüft nur, ob der Typ der Variable "integer" ist, nicht jedoch, ob der Inhalt der Variable eine Zahl ist. Das sind zwei paar Schuhe.
Du könntest es so machen:
if (!preg_match ('!^\d+$!', $zahl)) {
print 'Das ist keine Zahl!';
}
Viele Grüße,
Christian
Mit preg_match funktionierts leider auch nicht :(
Halihallo Echt
if ($answer eq 'Mit preg_match funktionierts leider auch nicht :(') {
print 'Falsche oder fehlende Beschreibung - Benutzer angehalten';
}
Viele Grüsse
Philipp
Halihallo Echt
if ($answer eq 'Mit preg_match funktionierts leider auch nicht :(') {
print 'Falsche oder fehlende Beschreibung - Benutzer angehalten';
}Viele Grüsse
Philipp
Was soll ich da noch beschreiben? Auch mit dem vorgeschlagenen preg_match erkennt PHP die Integer Zahl nicht als solche.
Hallo Christian
Ganz einfach:
is_int(7) => true
is_int('7') => falseis_int prüft nur, ob der Typ der Variable "integer" ist, nicht jedoch, ob der Inhalt der Variable eine Zahl ist. Das sind zwei paar Schuhe.
Du könntest es so machen:
if (!preg_match ('!^\d+$!', $zahl)) {
print 'Das ist keine Zahl!';
}
Für solche Fälle würde ich nie reguläre Ausdrücke verwenden. Einfache Lösung
$x= (int) $variable;
$x= (string) $x;
if ($x!==trim($variable)) {
echo "keine Integerzahl";
}
also einfach die Variable explizit in eine Integer umwandeln und wieder zurück in einen String und dann beide per Identitätsvergleich vergleichen.
Ist auf alle Fälle ressourcenschonender als reguläre Ausdrücke. Holler, per Formular übergebene Variablen sind immer vom Typ String. Das trim entfernt in diesen Fall begrenzende Leerzeichen.
Viele Grüße
Antje
Danke, deine Version hat funktioniert!
Gruß, Holler