Regulärer Ausdruck für PHP, der einem Dateipfad entspricht

7

Kann mir bitte jemand helfen mit dieser preg_match

%Vor%

Ich muss einen möglichen Dateipfad abgleichen. Also muss ich nach doppelten Schrägstrichen usw. suchen. Gültige Dateipfadzeichenfolgen sollten nur so aussehen:

%Vor%

oder

%Vor%

Also sollte ein Schrägstrich am Anfang dieser Zeichenfolge auch überprüft werden. Bitte helfen.

Danke:)

BEARBEITEN : Außerdem wird dieser Pfad aus einer Textdatei gelesen. Es ist kein Dateipfad auf dem System. Also hoffentlich sollte es in diesem Fall alle Systeme unterstützen können.

RE-EDIT : Entschuldigung, aber die Zeichenfolge kann auch so aussehen: myfile.php oder myfile.js oder myfile.anything

Wie erlaube ich auch solche Strings? Ich entschuldige mich dafür, dass ich davor nicht zu spezifisch war ...

    
SoLoGHoST 03.05.2010, 06:09
quelle

2 Antworten

10

Sie können:

%Vor%     
codaddict 03.05.2010, 06:28
quelle
12

Bitte beachten Sie, dass es viele Arten von möglichen Dateipfaden gibt. Zum Beispiel:

  • "./"
  • "../"
  • "........" (Ja, das kann der Dateiname sein)
  • "Datei / Datei.txt"
  • "Datei / Datei"
  • "file.txt"
  • "Datei /../.// Datei / Datei / Datei"
  • "/ Datei /../.// Datei / Datei /. Datei" (UNIX)
  • "C: \ Windows \" (Windows)
  • "C: \ Windows \ asd / asd" (Windows, php akzeptiert dies)
  • "Datei /../.// Datei / Datei / Datei! @ # $"
  • "Datei /../.// Datei / Datei / Datei! @ #. php.php.php.pdf.php"

Alle diese Dateipfade sind gültig. Ich kann mir keine einfache Regex vorstellen, die es perfekt machen könnte.

Nehmen wir an, es ist nur ein UNIX-Pfad für den Moment, das ist, was ich denke, sollte in den meisten Fällen funktionieren:

%Vor%

Es prüft alle Zeichenfolgen auf ^, *,?, ", & lt ;, & gt ;, |,: (entfernen Sie diese für Windows). Dies sind alle Zeichen, die Windows Dateinamen nicht zulassen, zusammen mit / und.

Wenn es sich um Fenster handelt, sollten Sie den Pfad mit \ durch / ersetzen und dann explodieren und prüfen, ob es absolut ist. Hier ist ein Beispiel, das in Unix und Windows funktioniert.

%Vor%     
Mo Lam 26.08.2012 00:31
quelle

Tags und Links