phpbar.de logo

Mailinglisten-Archive

[php] form check

[php] form check

Ulf Wendel ulf_(at)_redsys.de
Tue, 25 Jan 2000 18:13:38 +0000


Christian Gradl wrote:

> will nur ueberpruefen ob in ein form-field zahlen, oder buchstaben drinstehen
> nach der art
> wenn im feld nur zahlen dann okay wenn nicht dann fehler
> genauso mit nicht gewünschten zeichen
> wenn eingabe unerwünschte zeichen enthaelt dann fehler....

Mit Regular Expressions ist dies recht einfach und übersichtlich.
Geprüft werden soll ob in der Variable nur Zahlen vorkommen, also Werte
die aus der Menge 0, 1, 2 ... 9 stammen. Übersetzt dies in die Welt der
regulären Ausdrücke schreibt man: "[0-9]". 

Eine Menge wird durch eckige Klammern "[]" begrenzt. In unserer Menge
sollen enthalten sein [0123456789]. Da 0...9 in der ASCII Tabelle
hintereinander liegen ("0" => ASCII 48, "9" => ASCII 57), dürfen wir
schreiben [0-9]. 

Es gibt drei wichtige Angaben, um zu beschreiben wieviele
Übereinstimmungen mit der Menge vorhanden sein müssen:

0...n     [0-9]*
1...n     [0-9]+
n         [0-9]{n}

Wir verlangen "wenn im feld nur zahlen dann okay". Das ist
gleichbedeutend mit "mindestens eine Ziffer". Der Reguläre Ausdruck
heißt entsprechend "[0-9]+".

Mit der schon etwas in die Jahre gekommenen Funktion ereg()
(http://www.php.net/manual/function.ereg.php3) wird ein regulärer
Ausdruck mit dem gegebenem String verglichen.

$text = "Emil 17";
if (ereg("[0-9]+", $text))
  echo "enthält Zahlen!<br>\n";

Dieses Beispiel hilft nicht weiter, weil nur geprüft wird ob mindestens
eine Ziffer enthalten ist. Es dürfen noch andere Zeichen vorkommen.
Statt uns mit der Menge der anderen Zeichen zu befassen, wird der
Ausdruck um zwei Zeichen besonderer Bedeutung erweitert. 

"^" bezieht sich auf den Stringanfang. "^[0-9]+" prüft ob der String mit
einer Zahl beginnt. "$" bezieht sich auf das Stringende. "[0-9]+$" prüft
ob der String mit einer Zahl endet. Die Kombination beider Zeichen führt
zur Lösung:

$text = "Emil 17";
if (ereg("^[0-9]+$", $text))
  echo "besteht nur aus Ziffern!";

Der Suchausdruck "^[0-9]+$" bedeutet in unserer Sprache: "Prüfe ob der
Text mit einer Ziffer beginnt und auch endet. Nach der ersten Ziffer
dürfen beliebig viele weitere Ziffern stehen.".

Ulf


php::bar PHP Wiki   -   Listenarchive