Antje Hofmann: is_int() funktioniert nicht?

Beitrag lesen

Hallo Christian

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!';
}

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