tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
2284
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    matzseesi matzseesi ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    205
    Hi Leute

    Habe ein Problem mit den Regular Expressions hab auch schon das Tutorial angschaut verstehe aber noch ein paar Sachen nicht.
    PHP-Code:
     function checkspstring($char)
     {
      if (
    ereg("[,|]+",$char))
      {
       
    $error=1;
       return 
    $error;
      }
     } 
    Mit dieser Funktion möchte ich überprüfen ob ein , bzw ein | eingegeben wurde. Wenn ja dann soll er mir einen 1ser zurückgeben! was hab ich da falsch geshrieben. wenn ich zb Martin| eingebe dann haut das nicht hin der gibt mir keinen Fehler aus.
     

  2. #2
    Registriert seit
    Nov 2002
    Ort
    Altdorf bei Nürnberg
    Beiträge
    3.027
    Das geht auch ohne RegEx:
    PHP-Code:
    function checkstring($a_sInput)
    {
        if ((
    strpos($a_sInput'|') !== false) || (strpos($a_sInput',') !== false)) {
            return 
    false// bei einem `check' im Funktionsnamen erwartet man eher ein false bei einem Fehler
        
    } else {
            return 
    true;
        }
    }

    // oder mit RegEx:
    function checkstring($a_sInput)
    {
        return !
    preg_match('#[,|]#'$a_sInput);

     

  3. #3
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Das Problem bei Deinem RegExp war, dass das Zeichen "|" reserviert ist. und zwar wird dadurch eine Zeichenauswahl erstellt. Wenn Du das Zeichen dennoch verwenden möchtest, musst Du es quoten:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    function checkspstring($char)
    {
      if (ereg("[,|\|]+",$char))
      {
       $error=1;
       return $error;
      }
    }

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  4. #4
    matzseesi matzseesi ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    205
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     function checkspstring($char)
     {
      if (ereg("[,|\|]+",$char))
      {
       $error = '1';
       return $error;
      }
     }

    So funktionierts leider auch nicht

    Ich übergebe im $char = 'asdf,';

    und frage so ab
    PHP-Code:
    if (checkspstring($char)=='1')
    {
     echo 
    'error';

     

  5. #5
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Also das funktioniert bei mir!
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    <?php
     
    function checkspstring($char) {
      if (ereg("[,|\|]+",$char)) {
        $error = '1';
        return $error;
      }
    }
     
    $char = 'asdf,';
     
    if (checkspstring($char)=='1') {
      echo 'error';
    }
     
    ?>
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  6. #6
    matzseesi matzseesi ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    205
    Diese Beide Funktionen überprüfen eine Eingabe von einem User
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
     function checksql($char)
     {
      $char=mysql_escape_string($char);
      $char=addslashes($char);
      return $char;
     }
     
     function checkspstring($char) 
     {
      if (ereg("[,|\|]+",$char)) 
      {
       $error = '1';
       return $error;
      }
     }

    Ok?
    Nun sagen wir gibt der User ein Martin|

    dann wird auf der Action Seite so überprüft
    Zuerst kommt
    Code :
    1
    
    $f_uv_vorname    = checksql(trim($HTTP_POST_VARS["f_uv_vorname"]));

    und dann noch

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    if (($f_uv_vorname=='')||(checkspstring($f_uv_vorname)=='1'))
      {
       echo 'Bitte geben Sie einen g&uuml;ltigen Vornamen ein<br><br>';
       echo '<div class="buttonuv" onMouseOver="javascript:highlight(this);" onMouseOut="javascript:unhighlight(this);"><a href="javascript:history.back()">Zurück zum Formular</a></div>';   
       echo '</tr></td></table>';
       return;
      }

    Aber der liefert mir keinen Fehler
    der tragt dies ganz normal in die Datenbank ein

    Auch wenn der Name MartinINSERT hießt zb (Wobei ich nicht weiß ob die escape string fkt dies akzeptiert oder nicht
     

  7. #7
    matzseesi matzseesi ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    205
    kann mir da keiner helfen
     

  8. #8
    Avatar von Torgath
    Torgath Torgath ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    84
    Ich arbeite nun mit den Regular Expressions und die sind mit der Zeit sogar ziemlich verständlich... nun tritt aber ein Problem auf:

    Parse error: parse error in c:\programme\apache group\apache\htdocs\docs\vorlagen\work_psgeneralt.php on line 26

    Der Code dazu:


    PHP-Code:
    if(preg_match("$code, '$_POST[code]'"))
    {
    }
    else
    {
    $Val 1;
    print 
    "Falsche Eingabe in Code";

    Die Variable:

    PHP-Code:
    $code "/^[0-9]{2}$/"
    $Val steht dafür da, wenn bei einer späteren Abfrage $Val nicht 0 ist, geht die ganze Eintragung gar nicht weiter...

    Ich finde da oben einfach keinen Fehler...
     

  9. #9
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    PHP-Code:
    if(preg_match($code$_POST['code'])) 
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  10. #10
    Avatar von Torgath
    Torgath Torgath ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    84
    Mir ist gerade aufgefallen, das ich obeerhalb noch ne Variable offen hatte... hab das geändert, dann kam diese Nachricht: (Immer noch mit den gleichen Texten)

    Warning: preg_match() expects at least 2 parameters, 1 given in c:\programme\apache group\apache\htdocs\docs\vorlagen\work_psgeneralt.php on line 26
    Falsche Eingabe in Code


    Ändere ich den Code wie du es mir vorgeschlagen hast, Sven, kommt diese Meldung:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\programme\apache group\apache\htdocs\docs\vorlagen\work_psgeneralt.php on line 26
     

  11. #11
    Avatar von Torgath
    Torgath Torgath ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    84
    Gut dieses Problem ist gelöst:

    PHP-Code:
     $code "/^([0-9]{2})$/"
    so muss es richtig aussehen und so:

    PHP-Code:
     if(preg_match("$code""$_POST[code]")) 

    Nun aber ne andere Frage...

    Was muss ich schreiben damit ich Punkte und/oder Leerzeichen habe?

    Für Punkte hab ich das hier überlegt:

    PHP-Code:
     $tnumdot8 "/^([0-9{1,6})(\.[0-9]{2})$/"
    Für Leerzeichen hab ich das hier:

    PHP-Code:
     $tnumdot8 "/^([0-9{1,6})(\ [0-9]{2})$/"
    Aber nichts funktioniert...
     

  12. #12
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Gehts so?
    Code :
    1
    
     $tnumdot8 = "/^(\d{1,6})([\.\s]\d{2})$/";
    das würde auf 1-6 Ziffern, gefolgt von Punkt oder Leerzeichen.... beendet mit 2 Ziffern
    ...zutreffen
     

  13. #13
    Avatar von Torgath
    Torgath Torgath ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    84
    Wofür steht das \d?

    Und warum wird \.\s eingefügt?

    Und nein, es geht noch immer nicht... ich vermute, da die Formatierung des Wertes in der MySQL Datenbank auf decimal(19,2) ist, sich das ganze irgendwie nicht verträgt...
    Geändert von Torgath (03.03.05 um 09:10 Uhr)
     

  14. #14
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Das \d steht für Ziffern(Digit)
    [\.\s] steht für eine Zeichenklasse mit Punkt und Leerzeichen \s-->Space

    Warum es nicht funktioniert?... an dem Spaltenformat dürfte es eigentlich nicht liegen... die untersuchte Zeichenkette muss halt genau übereinstimmen.
    Wenn 7 Ziffern(oder mehr) vor dem Komma sind, ist dies nicht mehr der Fall.
     

  15. #15
    Avatar von Torgath
    Torgath Torgath ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    84
    Hab aber als Test nur mal 0.00 geschrieben und trotzdem gabs nen Fehler...
     

Ähnliche Themen

  1. Regular Expressions
    Von aeiber im Forum PHP
    Antworten: 0
    Letzter Beitrag: 07.04.07, 02:28
  2. Regular Expressions
    Von Drizztd im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 03.01.07, 15:26
  3. Regular Expressions
    Von yan1 im Forum .NET Café
    Antworten: 2
    Letzter Beitrag: 28.06.06, 00:21
  4. Regular Expressions
    Von dennislassiter im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.05.06, 16:11
  5. regular expressions
    Von Scalé im Forum PHP
    Antworten: 0
    Letzter Beitrag: 06.03.02, 11:16