Mailinglisten-Archive |
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