tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
300
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Unicate Unicate ist offline Mitglied Brokat
    Registriert seit
    Apr 2005
    Beiträge
    358
    Was soll er tun:
    Er soll einen MySQL - Query überprüfen und mir sagen, ob er ein Ergebniss zurueck liefert oder nicht.
    ein "INSERT" soll z.B. keines zurück liefern sondern eigentlich nur ein "SELECT"
    Wenn der Query keines der im Regex angegebenen Anfänge hat, dann soll er false zurückgeben

    Er macht aber nichts von dem...

    PHP-Code:
    function CheckQuery($query)
    {
        if(
    preg_match("/^(SELECT|INSERT INTO|UPDATE|DELETE)*/is"$query$which))
        {
            
    $which trim(strtoupper($which[0]));
            switch(
    $which)
            {
                case 
    'SELECT':
                    return 
    1;
                    break;
                case 
    'INSERT INTO':
                    return 
    2;
                    break;
                case 
    'UPDATE':
                    return 
    2;
                    break;
                case 
    'DELETE':
                    return 
    2;
                    break;
                default:
                    return 
    false;
            }
        }
        else
        {
            
    /* Unguelitger Query */
            
    return false;
        }

     
    /* no comment */

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Entferne mal den *-Quantifikator.
     
    Markus Wulftange

  3. #3
    Unicate Unicate ist offline Mitglied Brokat
    Registriert seit
    Apr 2005
    Beiträge
    358
    A: Warum soll ich den entfernen, der steht doch für x Zeichen oder ?
    B: Hab ich gemacht und geht genauso wenig
     
    /* no comment */

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal folgende Funktion:
    PHP-Code:
    function CheckQuery$query )
    {
        if( 
    preg_match('/^(?:SELECT|INSERT INTO|UPDATE|DELETE)/is'trim($query), $match) ) {
            switch( 
    strtoupper($match[0]) ) {
                case 
    'SELECT':
                    return 
    1;
                    break;
                case 
    'INSERT INTO':
                case 
    'UPDATE':
                case 
    'DELETE':
                    return 
    2;
                    break;
            }
        }
        return 
    false;

     
    Markus Wulftange

  5. #5
    Unicate Unicate ist offline Mitglied Brokat
    Registriert seit
    Apr 2005
    Beiträge
    358
    Könntest du mal das "?:" erklären?
     
    /* no comment */

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Die Schlüsselsequenz ?: sorgt dafür, dass der Inhalt der Klammern zwar gruppiert wird, von ihm aber aber kein so genannter Subpattern erzeugt wird und damit auch nicht referenzierbar ist.
     
    Markus Wulftange

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 25.06.10, 12:07
  2. Probleme mit Regex und Auslesen
    Von hauke1981 im Forum .NET Windows Forms
    Antworten: 7
    Letzter Beitrag: 14.10.08, 18:46
  3. Antworten: 1
    Letzter Beitrag: 21.01.08, 16:58
  4. [PHP/RegEx] Probleme MIT Delimiter
    Von en2k im Forum PHP
    Antworten: 1
    Letzter Beitrag: 13.07.04, 02:05
  5. Parsing: RegEx mit '&', RegEx-Kenner gefragt
    Von Kachelator im Forum PHP
    Antworten: 8
    Letzter Beitrag: 21.04.04, 09:16