Schönen guten Tag Kai,
das siehst Du falsch. Das preg_match _sehr wohl_ einen Sinn!
Nein.
doch!
Entweder die 512.4 ist ein für das Programm in dieser Form gültiger Wert, dann kann mit ihm unverändert weitergearbeitet werden oder es wird ein Integer-Wert erwartet, dann wird selbstverständlich mit dem von intval() zurückgegebenen Wert weitergearbeitet.
Das mag in spezifischen Fällen so sein. Das ändert aber nichts daran, dass es ohne dem pregmatch nicht möglich ist, zu kontrollieren, ob wirklich nichts anderes als eine ganze Zahl eingegeben worden ist, unabhängig davon, ob Du das jetzt als relevant ansiehst oder nicht.
preg_match() wird in beiden Fällen nicht benötigt.
Wenn es für die Weiterverarbeitung eines speziellen Falls unwichtig ist, stimmt das, wenn es von Bedeutung ist oder man - wieso auch immer - möchte, dass _nur_ ganze Zahlen eingegeben werden, stimmt das _nicht_. Und deshalb ist es nicht korrekt, meine Lösung als generell "falsch" anzuprangern.
Ansonsten sollte auch das beachtet zu werden, was Martin schrieb. Weshalb sollte man jemanden zwingen, beispielsweise 1000000000000 einzutippen statt 1E12
Siehst Du, und das ist der Unterschied zwischen Technikern, Informatikern oder Mathematikern und den normalen Menschen. Denn _kein_ normaler Mensch auf dieser Welt käme auf die Idee, 1E12 einzugeben, obwohl das natürlich mathematisch korrekt ist.
Mit lieben Grüßen
H. Wolowitz
Gut, dann können wir die Zettel von den Laternen nehmen...