Eurosystem: Sonderzeichen in Array

Hallo,

ich versuche zu erkennen ob in POST-Variablen, die über ein Formular übergeben werden, bestimmte Sonderzeichen vorkommen. Dazu benutze ich ein Array in dem die Sonderzeichen stehen, die nicht vorkommen dürfen. Mit einer while-Schleife und strpos überprüfe ich dann, ob die Sonderzeichen in der POST-Variable stehen.

Code:

  
$ungueltigezeichen = array("'","<",">","*","|","`","´","/","~","\");  
  
$i=0;  
while ($bungueltigezeichen[$i]) {  
  if (strpos($benutzername, $bungueltigezeichen[$i])!==FALSE) { $fail='bname';  
    }  
  $i++;  
  }  

Leider scheint es so zu sein, dass bestimmte Zeichen nicht im Array stehen dürfen, wie zum Beispiel "". Es wird die Fehlermeldung 'Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in C:...' angezeigt, obwohl das Zeichen ja in Anführungszeichen steht...

Weiß jemand wie ich die Zeichen ohne Fehler in ein Array schreiben kann?

LG
Eurosystem

  1. Hi!

    $ungueltigezeichen = array("'","<",">","*","|","`","´","/","~","");
    Weiß jemand wie ich die Zeichen ohne Fehler in ein Array schreiben kann?

    Indem du die Syntaxregeln von PHP-Strings kennst, weißt dass der \ eine besondere Bedeutung hat und diese beim Notieren berücksichtigst.

    Lo!

  2. Hello,

    ich versuche zu erkennen ob in POST-Variablen, die über ein Formular übergeben werden, bestimmte Sonderzeichen vorkommen. Dazu benutze ich ein Array in dem die Sonderzeichen stehen, die nicht vorkommen dürfen. Mit einer while-Schleife und strpos überprüfe ich dann, ob die Sonderzeichen in der POST-Variable stehen.

    Code:

    $ungueltigezeichen = array("'","<",">","*","|","`","´","/","~","");

    $i=0;
    while ($bungueltigezeichen[$i]) {
      if (strpos($benutzername, $bungueltigezeichen[$i])!==FALSE) { $fail='bname';
        }
      $i++;
      }

      
    Warum benutzt Du nicht foreach() anstelle von while?  
    <http://de.php.net/manual/en/control-structures.foreach.php>  
      
      
    
    > Leider scheint es so zu sein, dass bestimmte Zeichen nicht im Array stehen dürfen, wie zum Beispiel "\".  
      
    Doch! \ darf auch als Wert im Array vorkommen. Nur hat \ in PHP eine sehr starke Sonderbedeutung. Er leitet Steuersequenzen ein, oder maskiert sich selbst oder das " oder das '...  
      
    Du musst das Zeichen also anders übergeben:  
      
       $ungueltigezeichen[] = '\\';  
    oder  
       $ungueltigezeichen[] = "\\";  
    oder  
       $ungueltigezeichen = array("'","<",">","\*","|","`","´","/","~","\\");  
      
    <http://de.php.net/manual/en/language.types.string.php>  
      
      
      
      
      
    Liebe Grüße aus dem schönen Oberharz  
      
      
    Tom vom Berg  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    <http://bergpost.annerschbarrich.de>
    
    1. Ok, mit "\" funktionierts.
      An foreach hab ich irgendwie gar nicht gedacht... :)
      Vielen Dank für die Hilfe!

      1. Sie sollten diesen Trick mit den meisten modernen Programmiersprachen verwenden.

        --
        Regards