Hallo,
ich habe folgende Konventionen für eine Zeichenkette:
Keines dieser Zeichen:
:/\|<>*?"
Eine Länge der Zeichenkette von höchstens 31 Zeichen und kein . am Anfang der Zeichenkette (bewusst soll kein .htaccess etc. erstellt werden können)
Folgendes Regex macht bis auf den \ was es soll:
Füge ich nun den \ maskiert ein, gibt es einen Fehler:
Produziert:
Compilation failed: missing terminating ] for character class at offset 56
1. Frage: Warum kommt da ein Fehler. Ich habe den Backslash doch maskiert.
2. Frage: Kann man diesen Ausdruck kürzer realisieren und wenn ja, wie?
Gruß Andreas
ich habe folgende Konventionen für eine Zeichenkette:
Keines dieser Zeichen:
:/\|<>*?"
Eine Länge der Zeichenkette von höchstens 31 Zeichen und kein . am Anfang der Zeichenkette (bewusst soll kein .htaccess etc. erstellt werden können)
Folgendes Regex macht bis auf den \ was es soll:
PHP-Code:
<?php
$dateiname = ".abc";
var_dump(preg_match('/^[^\.\:\/\?\|\<\>\*\?\"][^\.\:\/\?\|\<\>\*\?\"]{0,30}$/i',$dateiname));
?>
PHP-Code:
<?php
$dateiname = ".abc";
var_dump(preg_match('/^[^\.\:\/\?\|\<\>\*\?\"\\][^\.\:\/\?\|\<\>\*\?\"\\]{0,30}$/i',$dateiname));
?>
Compilation failed: missing terminating ] for character class at offset 56
1. Frage: Warum kommt da ein Fehler. Ich habe den Backslash doch maskiert.
2. Frage: Kann man diesen Ausdruck kürzer realisieren und wenn ja, wie?
Gruß Andreas
Kommentar