PHP regulärer Ausdruck für eine filepath
Kann mir bitte jemand helfen mit diesem preg_match
if (preg_match('~[^A-Za-z0-9_\./\]~', $filepath))
//Show Error message.
Ich brauche, um einen möglichen Dateipfad. Also brauche ich, um zu überprüfen, für doppelte Schrägstriche, etc. Gültige Pfad-strings so sollte es Aussehen, nur:
mydir/aFile.php
oder
mydir/another_dir/anyfile.js
Also einem Schrägstrich am Anfang der Zeichenkette überprüft werden soll auch. Bitte helfen Sie.
Dank 🙂
BEARBEITEN:
Auch, Jungs, dieser Weg wird Lesen aus einer text-Datei. Es ist nicht ein Dateipfad auf dem system. So hoffentlich es sollte in der Lage sein, um alle Systeme in diesem Fall.
RE-EDIT:
Sorry, aber der string kann auch so Aussehen zu:
myfile.php
oder myfile.js
oder myfile.anything
Wie kann ich Zeichenketten wie diese, wie auch? Ich entschuldige mich für die nicht zu spezifisch auf diese, bevor...
- Nur die beiden Beispiel-Pfade angezeigt werden, indem Sie abgestimmt werden sollte ?
- Eine Datei-Erweiterung abgestimmt werden sollte. Kann keine Schrägstriche vor der Zeichenfolge und kann keine Schrägstriche am Ende der Zeichenfolge. Das ist die einzige Grenze, und es muss mit den Zeichen A-Z, a-z, 0-9, oder haben und Unterstrich oder ein Punkt drin. Das ist alles.
- Welche Dateisysteme sollte der Pfad gültig sein?
- Alle, wenn möglich. Ansonsten sind die meisten.
- Es gibt Dutzende von verschiedenen Dateisystemen und alle haben unterschiedliche Spezifikation (siehe en.wikipedia.org/wiki/Comparison_of_file_systems). Die union, die diese Spezifikationen wahrscheinlich nur
[A-Z0-9]{1,8}
für Dateinamen (MS-DOS nur 8 Byte) und einer Gesamtlänge von 30 Bytes für die Länge der Strecke (Apple-DOS 3.x enthält, sodass nur 30 Bytes). - Gut, vielleicht gibt es eine andere Funktion, wie 1 der php-string-Funktionen, die am besten geeignet wäre. Dieser text kommen aus einer text-Datei... also nicht sicher, ist es auch wichtig, das Datei-system.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tun:
if(!preg_match('#^(\w+/){1,2}\w+\.\w+$#',$path))
myfile.php
if (!preg_match('#^(\w+/){1,2}\w+\.\w+$#', $filepath))
, wie können zulassen, dass Pfade wie diese:afile.php
ohne Schrägstriche und halten immer noch darauf beschränkt, wie du es haben? Nochmals vielen Dank, und sorry für die Unannehmlichkeiten.Bitte beachten Sie, dass es gibt viele Arten von möglichen Datei-Pfade.
Zum Beispiel:
Alle diese Datei-Pfade gültig sind. Ich kann nicht glauben, eine einfache regex machen kann ist es perfekt.
Nehmen wir an, es ist nur ein UNIX-Pfad für jetzt, das ist, was ich denke, dass sollte für die meisten Fälle:
Prüft es für alle string -^, *, ?, ", <, >, |, :(entfernen Sie diesen für windows). Dies sind alle Zeichen, die windows nicht für Dateinamen, zusammen mit /und .
Wenn es windows verwenden, sollten Sie ersetzen den Pfad \ mit /und dann explodieren Sie, und überprüfen, ob es absolute. Hier ist ein Beispiel, dass die Arbeit in unix und windows.