Tach!
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.
ctype_digit() existiert. Abgesehen davon, wenn eine Ziffernfolge gewünscht ist, wie bei Telefonnummern, Postleitzahlen, Seriennummern und ähnlichem, dann ist eine Muster-Prüfung sinnvoll. Im vorliegenden Fall aber, bei dem es nur auf den Wert einer Zahl ankommt, ist es wirklich völlig unerheblich, in welchem Format diese eingegeben wird. Intern wird sie (sollte sie zumindest) sowieso in einem Zahlentyp (int, float) und nicht in einem String abgelegt. Dabei verliert sie automatisch das bei der Eingabe verwendete Aussehen, weswegen eine Musterprüfung keinen anderen Sinn mehr ergibt, als den Anwender technisch unnötig einzuschränken.
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.
Und trotzdem ist das kein Grund, die Welt zu einem Einheitsbrei zwingen zu wollen. Die Technik gibt es her, es ist auch kein Mehraufwand. (Skalare) $_GET/$_POST-Inhalte sind zunächst immer Strings. Als Wert verwendete Zahlen müssen deshalb sowieso in ein Zahlenformat konvertiert werden, die Prüfung auf den Wertebereich braucht es auch und ist auf numerischer Ebene deutlich einfacher (zu schreiben und zu verstehen) als eine Musterprüfung.
dedlfix.