dedlfix: ctype-digit

Beitrag lesen

echo $begrüßung;

ich bin heute zufällig auf die Ctype Funktionen gestossen. Nicht schlecht dachte ich und wundernswert, warum bei den typischen Fragen zu Formularüberprüfungen selten, ich hatte es noch nie gesehen, empfohlen wurde.

Es gibt noch einige weitere unbekannte Bestandteile PHPs, beispielsweise die Filter Functions.

Nach ein wenig Nachforschung, fand ich den Hauptgrund darin, weil zb. Ctype Funktionen ctype_digit() nur mit Strings zurecht kommt:

Das c steht ja auch für Character und Zahlen(typen) sind keine Zeichen(ketten).

Na gut, dachte ich wär ja auch zu schön gewesen, was soll ich mich also damit rumärgern, bleibe ich doch gleich bei is_int oder is_numeric, auch wenn ich da einiges anpassen muss, den das problem ist ja:

  1. Kommt eine (scheinbare) Zahl an oder ist es doch ein String, der aussieht wie eine Zahl? Was ein Problem bei is_int sein könnte

is_int() macht eine Typprüfung, keine Inhaltsauswertung. Kommt in einem String eine Ziffernfolge daher ist das kein Integer.

  1. 2.455 oder 2,44 sind auch Zahlen, ok kein integer aber somit geht is_numeric schon mal nicht, wenn ich nur Integer akzeptieren will.

Das Komma ist kein Bestandteil einer von PHP akteptierten Zahl.

Es dürfe Zahlen von 0-unendlich eingegeben werden.

Zahlentypen haben einen definierten Wertebereich. "Unendlich" ist also schon mal nicht als Zahl möglich, nur als aus Ziffern bestehender String. Außerdem kommen Benutzereingaben immer als String daher (Ausnahmen sind für die typische PHP-Anwendung nicht relevant).

Die Werte können intern erzeugt werden, aber auch von einem Formular kommen.

Auch "intern erzeugte" Zahlen müssen sich an den Wertebereich des jeweiligen Typs halten.

Welche Funktion(unter Berücksichtigung der notwendigen Anpasssung des Werte an die Funktion)sollte ich nun, und warum, dafür nutzen?

Wenn du mit den Zahlen rechnen willst, musst du dich den Einschränkungen des jeweiligen Zahlentyps unterwerfen. Wenn du mit größeren Zahlen rechnen willst, nimm GMP oder BC Math aus den Mathematical Extensions. Dann musst du aber mit Strings (oder GMP-Ressourcen) hantieren. Ansonsten brauchst du sowieso Strings und kannst die String-Funktionen (ctype) verwenden. Und dann gibt es ja noch die oben erwähnten Filter.

Oder doch besser $pattern = '/\d*/';?

Dafür brauchst du Strings und ... na du weißt schon.

ps. Kann mal Jemand sagen warum hier oft noch unzählige Zeilenumbrüche vorhanden sin,

Drück nicht so oft Enter!

echo "$verabschiedung $name";