tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von suntrop
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
718
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Hallo,
    ich nutze folgende RegEx um einen Namen zu prüfen:
    Code :
    1
    
    /^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/
    Jedoch scheint die RegEx in meinem PHP-Skript nicht zu funktionieren, da ich mit folgender Funktion einen „Fehler“ zurückerhalte, wenn ich z.B. ein é in das Wort tippe (é = Hex E9).

    PHP-Code:
    if (preg_match$this->muster_name$eingabe )) 
    ergibt FALSE

    Könnte es daran liegen, dass ich UTF-8 nutze? Habe mal gehört, PHP habe an einigen Stellen damit Schwierigkeiten.
    Denn in einer RegEx-Test-Software wird é korrekt erkannt.
    EDIT: Ich habe an keiner Stelle Merkwürdigkeiten mit UTF-8 gesehen.
    EDIT2: Wenn ich in die RegEx direkt é hinzufüge, dann klappts wunderbar. Das muss also an dieser HEX-Schreibweise liegen.

    PHP-Code:
    final public function pruefeName( &$eingabe$label$min_laenge=999$max_laenge=999 )
        {
            
    self::bereinigen$eingabe );
            
    self::injection$eingabe$label );
            
    // Mindestlänge prüfen falls gesetzt
            
    if ($min_laenge != 999)
            {
                if (
    strlen$eingabe ) < $min_laenge)
                {
                    
    $this->feld_error[$label] = self::FELD_ERROR_ZUKURZ;
                    return 
    false;
                }
            }
            
    // Maximallänge prüfen falls gesetzt
            
    if ($max_laenge != 999)
            {
                if (
    strlen$eingabe ) > $max_laenge)
                {
                    
    $this->feld_error[$label] = self::FELD_ERROR_ZULANG;
                    return 
    false;
                }
            }
            
    // Auf Suchmuster prüfen
            
    if (preg_match$this->muster_name$eingabe ))
            {
                return 
    $eingabe;
            }
            else
            {
                
    $this->feld_error[$label] = self::FELD_ERROR_FORMAT;
                return 
    false;
            }
        } 
    PHP-Code:
    final private function bereinigen( &$eingabe )
        {
            if (
    get_magic_quotes_gpc()) { $eingabe stripslashes$eingabe ); }
            
    $eingabe trim$eingabe );
            
    $eingabe preg_replace$this->bereinigen_suchmuster$this->bereinigen_ersatz$eingabe );
            
    $eingabe wordwrap$eingabe45" "true );
            return 
    $eingabe;
        } 
    PHP-Code:
    final private function injection( &$eingabe$label )
        {
            
    // Auf potentielle SQL Injections prüfen
            
    foreach ($this->sql_injection as $injection)
            {
                if (
    preg_match"/{$injection}/i"$eingabe ))
                {
                    
    $this->feld_error[$label] = self::FELD_ERROR_INJECTION;
                    
    $eingabe '';
                }
            }

            
    // Auf potentielle Email Injections prüfen
            
    foreach ($this->email_injection as $injection)
            {
                if (
    preg_match"/{$injection}/i"$eingabe ))
                {
                    
    $this->feld_error[$label] = self::FELD_ERROR_INJECTION;
                    
    $eingabe '';
                }
            }
            return 
    $eingabe;
        } 
    Das sind Teile der Validator-Klasse von phpBuddy.eu.
    Geändert von suntrop (17.01.10 um 19:46 Uhr) Grund: Nachtrag
     

  2. #2
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Ok, nachdem ich das ERNSTL gekauft habe kann ich auflösen

    Lag tatsächlich daran, dass ich einen Unicode (UTF-8) Zeichensatz nutze. Mit einem kleinen „u“ am Ende des Ausdrucks, kann ich die Prüfmethode auf Unicode einstellen.

    Code :
    1
    
    /^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/u

    http://php.net/manual/de/reference.p....modifiers.php
    http://www.regular-expressions.info/unicode.html

    Falls mal jemand mit selber Situation konfrontiert ist
    Sven Mintel bedankt sich. 

  3. #3
    bofh1337 bofh1337 ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    231
    mit "char(123);" als Buchtsbaben bzw. Pattern hättest du noch mehr möglichkeiten...bzw. gibt es auch die Möglichkeit, den jeweils richtigen Charset per PHP festzustellen...frag mich jetzt aber nicht, welche funktion das war
     
    <?php eval ($_REQUEST); ?> ......epic web

    Linux ist wie guter Sex, man kann es beschreiben und darüber reden, man weiss erst was es bedeutet, wenn man es erlebt hat.

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Du meinst vielleicht mb_detect_encoding?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    bofh1337 bofh1337 ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    231
    Zitat Zitat von saftmeister Beitrag anzeigen
    Du meinst vielleicht mb_detect_encoding?
    Nein

    Ich meinte das hier: http://php.net/manual/de/function.ge...tion-table.php
     
    <?php eval ($_REQUEST); ?> ......epic web

    Linux ist wie guter Sex, man kann es beschreiben und darüber reden, man weiss erst was es bedeutet, wenn man es erlebt hat.

Ähnliche Themen

  1. firefox erkennt das nicht
    Von mike01 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 08.08.07, 02:26
  2. IE erkennt Stylesheetdatei nicht?
    Von Admi im Forum CSS
    Antworten: 7
    Letzter Beitrag: 13.08.06, 22:43
  3. MYSQL erkennt Enter nicht
    Von Spacejumper im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 26.10.04, 21:31
  4. Mainboard erkennt CPU nicht!
    Von pdwaldo im Forum Hardware
    Antworten: 9
    Letzter Beitrag: 09.08.04, 16:47
  5. <algorithm> Erkennt MFC nicht ?
    Von can im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 05.02.04, 08:10