Hilfe!!! Problem beim Auswerten von Variablen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hilfe!!! Problem beim Auswerten von Variablen

    Hallo ich bin PHP-Anfänger

    Ich möchte den Inhalt einer Variablen auf folgende Zeichen überprüfen lassen:

    Code:
    [[]!\"#$%&'()*+,./:;<=>?@\^_´{|}~[-]*]
    Wenn diese Zeichen vorhanden sind soll ein text ausgegeben werden, wenn die Zeichen nicht vorhanden sind soll ein anderer TEXT ausgegeben werden.

    Das wollte ich wie folgt machen:

    PHP-Code:
    if (!ereg("[[:punct:]]"$Variable))
          {
             echo 
    "Verbotene Zeichen";
             break;
           }
      else
             {
               echo 
    "Alles O.K";
               break;
            } 
    auch so hab ich es versucht:

    PHP-Code:
    if (ereg("[[:punct:]]"$Variable))
          {
             echo 
    "Verbotene Zeichen";
             break;
           }
      else
             {
               echo 
    "Alles O.K";
               break;
            } 
    Egal ob die Variable die Zeichen enthielt oder nicht.

    Ich bekam immer die Ausgabe:
    Code:
    Verbotene Zeichen
    Wie löse ich mein Problem richtig ?
    Wo mache ich einen Fehler bzw. Denk Fehler?

    Wenn möglich bitte mit ausführlicher Erklärung für PHP-Anfänger.

    Danke für eure Hilfe
    Zuletzt geändert von AnNo1968; 22.02.2008, 20:14.
    Verständnis heißt:

    Die Situation, den Standpunkt und den Blickwinkel des anderen zu akzeptieren.

  • #2
    Ab php5 strpbrk

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      ghostgambler schrieb:

      Ab php5 strpbrk
      Und bei PHP 4.x wie gehe ich da vor?

      Wenn möglich bitte mit ausführlicher Erklärung für PHP Anfänger.
      Eine Ausfürliche Erklärung sind die drei Worte meiner Meinung nach nicht.

      Wie löse ich mein Problem richtig ?
      Wo mache ich einen Fehler bzw. Denk Fehler?
      Ist mein Ansatz der if..else Konstruktion falsch???

      Eventuell Code Verbesserung mit angeben!

      Danke für eure Hilfe.
      Verständnis heißt:

      Die Situation, den Standpunkt und den Blickwinkel des anderen zu akzeptieren.

      Kommentar


      • #4
        Dazu hilft meist ein Blick in die Kommentare zu der Funktion:

        http://www.php.net/manual/de/function.strpbrk.php#76169

        mfg

        Kommentar


        • #5
          Als PHP-Anfänger und mit minimalen Englisch Kenntnissen kann ich mit den Kommentaren nicht wirklich was Anfangen.

          Gilt das auch wenn der Wert meiner Variablen aus einem Eingabe Feld kommt.

          Kann ich mir dann die if...else Konstruktion sparen ?

          Muss ich jetzt erst noch eine function bauen. Um mein Problem zu Lösen?

          Und dann die if..else abfrage?



          Ich will diesen Wert der Variablen nach den besimmten Zeichen durchsuchen lassen und dann Verzweigen, je nach dem ob die Zeichen vorhanden sind oder nicht.

          Wenn möglich mit so wenig code wie Möglich um die Anzahl der Fehlerquellen zu minimieren.

          Bitte gebt mir doch ein Code Beispiel wie die Lösung des Problems aus sehen sollte.


          Danke für eure Hilfe
          Verständnis heißt:

          Die Situation, den Standpunkt und den Blickwinkel des anderen zu akzeptieren.

          Kommentar


          • #6
            Hilfe...

            Habe mein Problem leider noch nicht lösen können.

            Gibt es niemanden der einem PHP-Anfänger weiterhelfen kann oder will.

            Verständnis heißt:

            Die Situation, den Standpunkt und den Blickwinkel des anderen zu akzeptieren.

            Kommentar


            • #7
              Meine Meinung: Ohne Englisch sollte man vom Programmieren direkt Abstand nehmen...

              Die Zeichen die du definierst, sind ziemlich doppelt gemoppelt, oder täusche ich mich?

              PHP-Code:
              $zeichen 'DEINEZEICHEN';
              if(
              preg_match('%' $zeichen '%',$subject))
                die(
              'unerlaubte Zeichen vorhanden'); 
              Sollte seinen Zweck erfüllen.

              Evtl. sind die Stringfunktionen schneller:

              PHP-Code:
              for($i=0;$i<strlen($zeichen);$i++)
                if(
              strpos($zeichen[$i],$subject) !== false)
                  die(
              'unerlaubte Zeichen vorhanden'); 
              Beide Codes ungetestet. Kann nicht ausschließen, dass ich Argumente o.ä. vertauscht habe, aber das Prinzip sollte klar werden. Kann auch gut möglich sein, dass es noch andere (einfachere) Wege gibt.

              Kommentar


              • #8
                Kann auch gut möglich sein, dass es noch andere (einfachere) Wege gibt.
                PHP-Code:
                if ( strspn $string'[[]!\"#$%&\\'()*+,./:;<=>?@\^{|}~[-]*]' ) == strlen ( $string ) ) {
                    return true;

                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Also ich habe es erst einmal so versucht:

                  PHP-Code:
                  if (preg_match_all("[\W]"$variable$match))
                         {  
                           echo 
                  "Verbotene Zeichen";
                           break;
                         }
                    else
                           {
                             echo 
                  "Alles O.K";
                             break;
                          } 
                  Wenn die Variable Zeichen enthält die kein Buchstabe, keine Zahl und kein Unterstrich sind, erscheint die Ausgabe
                  "Verbotene Zeichen"

                  Wenn die Variable nur Buchstaben, Zahlen oder Unterstriche enthält erscheint die Ausgabe "Alles O.K".

                  Nun soll die Variable auch Leerzeichen enthalten dürfen nur wenn sie eins enthält erscheint bei oben auf geführten
                  Beispiel die Ausgabe "Verbotene Zeichen"

                  Als habe ich es so versucht:


                  PHP-Code:
                  if (preg_match_all("[^a-zA-Z 0-9]"$variable$match))
                         {  
                           echo 
                  "Verbotene Zeichen";
                           break;
                         }
                    else
                           {
                             echo 
                  "Alles O.K";
                             break;
                          } 
                  Jetzt ist es egal ob die Variable andere Zeichen als Buchstaben, Zahlen, Leerzeichen enthält oder nicht es erscheint
                  immer die Ausgabe "Alles O.K"

                  Wass muss ich in der Eckigen Klammer eintragen das, wenn die Variable Buchstaben, Zahlen und Leerzeichen enthält die Ausgabe "Alles O.K" erscheint. Und wenn die Variable ein Zeichen enthält was kein Buchstabe, keine Zahl und kein Leerzeichen ist die Ausgabe "Verbotene Zeichen" erscheint??????

                  Oder mache ich ein Fehler bzw. Denk Fehler???

                  Was ist an meinem zweitem Code Falsch? Wo ist der Fehler??

                  Eventuell Code Verbesserung mit angeben.

                  Auf meinem Test Server ist PHP 4.3.4

                  Wenn möglich mit ausführlicher Erklärung für PHP-Newbie

                  Danke
                  Zuletzt geändert von AnNo1968; 27.02.2008, 18:50.
                  Verständnis heißt:

                  Die Situation, den Standpunkt und den Blickwinkel des anderen zu akzeptieren.

                  Kommentar


                  • #10
                    PHP-Code:
                    echo (preg_match('/[^\\w ]/'$var)) ? "Ung&uuml;ltig" "G&uuml;ltig"
                    Es wird nach einem Zeichen gesucht, das kein "Wortzeichen" (AlNum & Unterstrich) und kein Leerzeichen ist. Wird eins gefunden, wird Ungültig ausgegeben, sonst Gültig.
                    Gruss
                    H2O

                    Kommentar


                    • #11
                      Hast du mal die alternative Lösung ohne Reguläre Ausdrücke ausprobiert?
                      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                      Kommentar


                      • #12
                        Es Funktioniert:

                        PHP-Code:
                        if (preg_match_all("/[^\w ]/"$variable$match))
                               {  
                                 echo 
                        "Verbotene Zeichen";
                                 break;
                               }
                          else
                                 {
                                   echo 
                        "Alles O.K";
                                   break;
                                } 
                        Genauso wie es soll. Bei nur Buchstaben und Zahlen und Leerzeichen in der Variablen kommt die Ausgabe "Alles O.K"

                        Wenn ein Zeichen in der Variablen ist das kein Buchstabe, Zahl oder Leerzeichen ist kommt die Ausgabe "Verbotene Zeichen"

                        tontechniker schrieb:


                        Hast du mal die alternative Lösung ohne Reguläre Ausdrücke ausprobiert?
                        Ja hatte ich. Das gleiche Problem wie in meinem Post vom 24-02-2008 13:50.

                        Vielen Dank für eure Hilfe


                        Zuletzt geändert von AnNo1968; 27.02.2008, 18:53.
                        Verständnis heißt:

                        Die Situation, den Standpunkt und den Blickwinkel des anderen zu akzeptieren.

                        Kommentar


                        • #13
                          preg_match() würde übrigens vollkommen ausreichen.

                          Kommentar

                          Lädt...
                          X