tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
17
ZUGRIFFE
583
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Thomas_Jung
    Thomas_Jung Thomas_Jung ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    333
    Hallo
    Ich möchte vor dem Versenden des Formular prüfen ob im Feld nummern
    1. Nur Zahlen von 0-9 vorhanden sind
    2. Keine 0 sich am Anfang der Zahl befindet
    3. Keine Leerzeichen sich am Anfang oder Ende befinden
    4. Zwischen den eingegebenen Zahlen muss b.z.w darf max ein Leerzeichen sein.

    Beispiel:
    Richtig
    1 22 333 4444 50000
    Falsch
    0 1 2 3 4 5
    Falsch
    1 2 3 4 05
    Falsch
    1..2....3....4..... 5

    Mein Code bisher
    PHP-Code:

    $nummern
    $_POST['nummern'];

    if (
    preg_match ("/^([0-9]+)$/"$nummern))
    {
    echo 
    "Eingabe OK";
    }
    else
    {
    echo 
    "Bitte geben Sie nur Zahlen getrennt durch Leerzeichen ein";


    Code :
    1
    2
    3
    4
    
    <form action="test.php" method="POST">
    <input type="text" name="nummern" value="">
    <input type="submit" value="Send">
    </form>

    Gruß Thomas
     
    Shit doesn't happen, it's produced by an asshole - Ein Anwendungsbeispiel sagt mehr als 1000 Worte.
    Sieh es nicht als selbstverständlich an, dass Dir jemand hilft und uneigennützig sein Wissen mit Dir teilt.

  2. #2
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    zu 3. Verwende trim().
     

  3. #3
    Avatar von Thomas_Jung
    Thomas_Jung Thomas_Jung ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    333
    Hallo suye

    Ein Problem weniger.
    Bleibt nur noch:
    2. Keine 0 sich am Anfang der Zahl befindet
    4. Zwischen den eingegebenen Zahlen muss b.z.w darf max ein Leerzeichen sein.

    PHP-Code:
    $nummern$_POST['nummern'];
    $nummerntrim($nummern); 

    if (
    preg_match ("/^([0-9]+)$/"$nummern))
    {
    echo 
    "Eingabe OK";
    }
    else
    {
    echo 
    "Bitte geben Sie nur Zahlen getrennt durch Leerzeichen ein";

    Gruß Thomas
     
    Shit doesn't happen, it's produced by an asshole - Ein Anwendungsbeispiel sagt mehr als 1000 Worte.
    Sieh es nicht als selbstverständlich an, dass Dir jemand hilft und uneigennützig sein Wissen mit Dir teilt.

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    PHP-Code:
    if (preg_match ("/^[1-9][\d\s]*$/"$nummern) && !strstr('  ',$nummern))
    {
    echo 
    "Eingabe OK";
    }
    else
    {
    echo 
    "Bitte geben Sie nur Zahlen getrennt durch Leerzeichen ein";

     

  5. #5
    Avatar von Thomas_Jung
    Thomas_Jung Thomas_Jung ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    333
    Hallo Sven Mintel

    Danke für die Antwort.

    Wenn ich die Zahlen 1 2 03 eingebe Zeigt er mir Eingabe OK an.
    Das sollte nicht sein weil 03 dabei ist. Die 0 am Anfang der Zahl ist nicht erlaubt.

    Gruß Thomas
     
    Shit doesn't happen, it's produced by an asshole - Ein Anwendungsbeispiel sagt mehr als 1000 Worte.
    Sieh es nicht als selbstverständlich an, dass Dir jemand hilft und uneigennützig sein Wissen mit Dir teilt.

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ach so war das gemeint mit der 0
     

  7. #7
    Avatar von Thomas_Jung
    Thomas_Jung Thomas_Jung ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    333
    Sorry Sven Mintel
    Hätte
    2. Keine 0 sich am Anfang der Zahlen befindet schreiben sollen.

    Gruß Thomas
     
    Shit doesn't happen, it's produced by an asshole - Ein Anwendungsbeispiel sagt mehr als 1000 Worte.
    Sieh es nicht als selbstverständlich an, dass Dir jemand hilft und uneigennützig sein Wissen mit Dir teilt.

  8. #8
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Ich hab hier einen etwas komplexeren Ausdruck, dieser schliesst aber gleich mit ein, dass nur maximal ein Leerzeichen zwischen den Ziffern sein darf.
    Im Editor hatte dieser aber irgendwie Probleme mit dem Zeilenende, daher hab ich das mal weggelassen.
    Code :
    1
    
    ^[1-9]([\s]?[\d])*
    Alternativ kannst Du auch den folgenden mal testen, das ist der gleiche Ausdruck, nur eben mit Zeilenende, also die Variante die bei mir im RegEx-Editor nicht funktionieren wollte.
    Code :
    1
    
    ^[1-9]([\s]?[\d])*$

    Nachtrag: Dieser RegEx schliesst auch Strings wie 1 02... aus.
    Code :
    1
    
    ^[1-9]([\s]?[1-9]+[\d]*)*
    Also der nun zuletzt angesprochene Punkt.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Anderer Vorschlach:
    PHP-Code:
    if(!preg_grep('@(\S|\s{2,})@',preg_split('|[1-9]\d*|',trim($nummern))))
      {
        echo 
    "Eingabe OK";
      }
    else
      {
        echo 
    "Bitte geben Sie nur Zahlen getrennt durch Leerzeichen ein";
      } 
     

  10. #10
    Avatar von Thomas_Jung
    Thomas_Jung Thomas_Jung ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    333
    Hallo Sven Mintel, Dennis Wronka

    Beide Abfragen funktionieren super welche soll ich jetzt nehmen?

    Vielen Dank.
    Gruß Thomas
    HTML-Code:
    if(!preg_grep('@(\S|\s{2,})@',preg_split('|[1-9]\d*|',trim($nummern))))
    
    if (preg_match ("/^[1-9]([\s]?[1-9]+[\d]*)*$/", $nummern) && !strstr('  ',$nummern)) 
     
    Shit doesn't happen, it's produced by an asshole - Ein Anwendungsbeispiel sagt mehr als 1000 Worte.
    Sieh es nicht als selbstverständlich an, dass Dir jemand hilft und uneigennützig sein Wissen mit Dir teilt.

  11. #11
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Meine ist kürzer
     

  12. #12
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Dennis’ Vorschlag ist zudem falsch, da dort keine null an zweiter Position der ersten Zahl erlaubt ist.

    Mein (noch kürzerer) Vorschlag:
    PHP-Code:
    preg_match('/^(?:\s?[1-9]\d*)+$/'trim($nummern)) 
    Jetzt wäre nur noch die Frage, welcher der effektivste ist. Ich tippe auf meinen.
     
    Markus Wulftange

  13. #13
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Zitat Zitat von Gumbo Beitrag anzeigen
    Dennis’ Vorschlag ist zudem falsch, da dort keine null an zweiter Position der ersten Zahl erlaubt ist.

    Mein (noch kürzerer) Vorschlag:
    PHP-Code:
    preg_match('/^(?:\s?[1-9]\d*)+$/'trim($nummern)) 
    Jetzt wäre nur noch die Frage, welcher der effektivste ist. Ich tippe auf meinen.
    Huch, das hatte ich garnicht bedacht, und auch garnicht getestet.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  14. #14
    Avatar von Thomas_Jung
    Thomas_Jung Thomas_Jung ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    333
    Hallo Gumbo

    Dennis’ Vorschlag ist zudem falsch, da dort keine null an zweiter Position der ersten Zahl erlaubt ist.

    Soweit hatte ich es noch nicht durchgetestet stimmt aber Vorschlag ist falsch.

    Danke an alle, die mir geholfen haben.


    Gruß Thomas
     
    Shit doesn't happen, it's produced by an asshole - Ein Anwendungsbeispiel sagt mehr als 1000 Worte.
    Sieh es nicht als selbstverständlich an, dass Dir jemand hilft und uneigennützig sein Wissen mit Dir teilt.

  15. #15
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zitat Zitat von Gumbo Beitrag anzeigen
    Jetzt wäre nur noch die Frage, welcher der effektivste ist. Ich tippe auf meinen.
    Ich konnte es nicht lassen und habe alle drei Algorithmen gegeneinander antreten lassen (auch wenn Dennis’ falsch ist). Bei je 100000 Wiederholungen ergab sich Folgendes:
    Sven: 1.53483819962
    Dennis: 0.780658006668
    Markus: 0.511282920837
     
    Markus Wulftange

Ähnliche Themen

  1. Formularfelder auf Eingabe überprüfen
    Von Schniko im Forum PHP
    Antworten: 27
    Letzter Beitrag: 07.07.10, 15:24
  2. GET-Eingabe überprüfen
    Von Dörti.Hermi im Forum PHP
    Antworten: 4
    Letzter Beitrag: 08.02.08, 17:56
  3. Formular Eingabe überprüfen
    Von hubbl im Forum PHP
    Antworten: 1
    Letzter Beitrag: 04.11.07, 23:18
  4. GET eingabe auf URL überprüfen
    Von kase im Forum PHP
    Antworten: 13
    Letzter Beitrag: 11.08.07, 15:57
  5. Eingabe auf Richtigkeit überprüfen
    Von matzseesi im Forum PHP
    Antworten: 2
    Letzter Beitrag: 13.03.04, 14:38