Sonderzeichen in Array
Eurosystem
- php
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
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!
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

--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Ok, mit "\" funktionierts.
An foreach hab ich irgendwie gar nicht gedacht... :)
Vielen Dank für die Hilfe!
Sie sollten diesen Trick mit den meisten modernen Programmiersprachen verwenden.