Variablentyp aus Formulareingabe ermitteln
James
- php
0 Eidgenosse0 James0 Eidgenosse0 James0 Eidgenosse0 James
0 Christian Kruse0 James
Guten Morgen,
Werden Formulareingaben eigentlich immer als Strings übergeben? Ich dachte, PHP interpretiert sich die Datentypen selbst. Konkret: Im unteren Beispiel bekomme ich bei Typ 1 ein "integer" und bei den Typen 2 und drei immer "string", egal was im Formularfeld stand. Was mache ich falsch? Es soll eine Postleitzahl überprüft werden, die ja ein Integer-Wert ist. "register_globals" steht auf on.
<?php
$test = 123;
print "TYP1: ".gettype($test)."<br />";
print "TYP2: ".gettype($eingabe)."<br />";
print "TYP3: ".gettype($_POST['eingabe']);
?>
<form action="<?php print($php_self); ?>" method="POST">
<input type="text" name="eingabe" size="25">
<input type="submit" value="send" name="send" >
</form>
Danke und Grüesslie,
James.
Hallo James,
wenn eine Postleitzahl als Integer gälte, würde eine Dresdener Postleitzahl (z. B. 01326) falsch interpretiert.
Gruß
Eidgenosse
Hallo Eidgenosse,
wie kommst du als Eidgenosse ausgerechnet auf Dresden?
Ist denn 0123 keine Interger?
Grüesslie,
James
Hallo James,
wenn eine Postleitzahl als Integer gälte, würde eine Dresdener Postleitzahl (z. B. 01326) falsch interpretiert.
Gruß
Eidgenosse
Hallo James,
die führende Null fällt bei der Umwandlung in einen Integerwert weg.
Gruß
Eidgenosse, der sich auch in Deutschland auskennt
Kommst du aus der Schweiz? Ich frage nur interessehalber, weil ich gerade für ein halbes Jahr in Bern war, schönes Städtchen.
Grüesslie,
James.
Hallo James,
die führende Null fällt bei der Umwandlung in einen Integerwert weg.
Gruß
Eidgenosse, der sich auch in Deutschland auskennt
Hallo James,
nur meinen Papieren nach. Ich lebe sozusagen als Ausländer unter Euch Deutschen. Bern ist in der Tat eine schöne Stadt, aber irgendwo auch recht provinziell.
Gruß
Eidgenosse
Hilfe, ein Ausländer!
Du meintest bestimmt, die ganze Schweiz ist irgendwo provinziell ;-)
Hallo James,
Werden Formulareingaben eigentlich immer als Strings
übergeben?
Ja.
Es soll eine Postleitzahl überprüft werden, die ja ein
Integer-Wert ist. "register_globals" steht auf on.
Dann mache die Pruefung so:
if((int)$var == $var) {
echo "int-Zahl";
}
else {
echo "Keine int-Zahl";
}
Sinnvoller waere allerdings ein RegEx:
if(preg_match('/^\d{5}$/',$var)) {
echo "scheint valide PLZ zu sein";
}
else {
echo "ups";
}
Gruesse,
CK
Hi Christian,
danke für die Antwort und den regulären Ausdruck.
gettype() macht dann allerdings insgesamt nur wenig Sinn. Denn was sollte ich sonst mit gettype() überprüfen als Formulareingaben? Selbst definierte Variablen werde ich ja nicht mit dem falschen Typen definieren, es sei denn am Montag Morgen.
Grüesslie,
James.