Ich brauche eine Funktion, native oder benutzerdefiniert, die überprüft, ob eine Zeichenfolge ein gültiger Verzeichnisname ist. Ich habe mir die PHP-Dokumentation angeschaut und finde nur die Funktion is_dir
, die prüft ob es ein existierendes Verzeichnis ist oder nicht und kein gültiger Name für ein Verzeichnis.Überprüfen Sie eine Zeichenfolge für einen gültigen Verzeichnisnamen
Antwort
Dies sollte für Sie arbeiten.
Siehe regex for validating folder name & file name
if (strpbrk($filename, "\\/?%*:|\"<>") === FALSE) {
/* $filename is legal; doesn't contain illegal character. */
}
else {
/* $filename contains at least one illegal character. */
}
Dies funktionieren würde. Sie können das zweite und dritte Argument an Ihre Bedürfnisse anpassen.
if (!mkdir($directory, 0700, true)) {
die('Error: Illegal directory.');
}
Beachten Sie, dass dadurch das Verzeichnis erstellt wird, wenn der Verzeichnisname gültig ist. Nach meiner bescheidenen Meinung (und ohne Ihren speziellen Anwendungsfall zu kennen) ist dies der bevorzugte Weg in den meisten Sprachen, die Gültigkeit des Verzeichnisnamens zu überprüfen. Versuchen Sie einfach, das Verzeichnis zu erstellen, und wenn es fehlschlägt, sagen Sie ihm, dass es fehlgeschlagen ist. Die Vorteile bestehen darin, dass es Ihr Code-Dateisystem unabhängig hält und es die am wenigsten fehleranfällige Methode ist, ein Verzeichnis zu validieren und zu erstellen, da kein anderer Prozess oder Thread in der Lage ist, beim Validieren ein Verzeichnis zu erstellen das Verzeichnis und wenn Sie es erstellen.
Der Nachteil ist, dass diese Methode annimmt, dass Sie das Verzeichnis sofort erstellen möchten.
Natürlich gibt es mehrere Gründe dafür, dass mkdir()
fehlschlagen kann (z. B. unzureichende Berechtigungen, Hardwarefehler, ungültiger Verzeichnisname usw.). Daher sollten Sie dem Benutzer verschiedene Fehlermeldungen basierend auf dem Fehler anzeigen. Leider hat PHP nicht ganz so stabile Ausnahmebehandlung wie einige andere Sprachen, aber wenn Sie diesen Weg gehen wollen, sollten Sie einen Ansatz wie in diesem answer verwenden können, um die verschiedenen Warnungen abzufangen, die mkdir()
erzeugen kann.
Vielleicht sollten Sie das versuchen: 'mkdir ('dirname/test /../ temp', 0700, true);' Es könnte definitiv nützlich sein, den '$ directory' Namen für bestimmte Dinge zu filtern, wie @GregoryBurns in seiner Antwort suggeriert ... – Wilt
- 1. Überprüfen Sie, ob eine Zeichenfolge eine bestimmte Zeichenfolge mit Array
- 2. Überprüfen, ob PWD den Verzeichnisnamen enthält
- 3. Suchen Sie nach einem gültigen Domänennamen in einer Zeichenfolge?
- 4. Überprüfen Sie eine Zeichenfolge für alle Elemente in einem Array
- 5. Typescript: Überprüfen Sie eine Zeichenfolge für die Nummer
- 6. Überprüfen Sie, ob eine Zeichenfolge „-“ und „]“ zugleich
- 7. Überprüfen Sie, ob eine Zeichenfolge enthält Zeichen
- 8. Überprüfen Sie, ob eine Zeichenfolge Leerzeichen hat
- 9. Überprüfen Sie, ob eine Zeichenfolge in C++
- 10. Überprüfen Sie, ob eine Zeichenfolge serialisiert ist?
- 11. C# überprüfen, ob delegate/func einen gültigen Empfänger hat
- 12. Generieren Sie alle gültigen Werte für einen regulären Ausdruck
- 13. So erhalten Sie einen weltweit gültigen Zeitstempel
- 14. Konvertiere die Zeichenfolge in einen gültigen Java-Variablennamen
- 15. überprüfen Zeichenfolge für ungültige Zeichen
- 16. Python - Prüfzeichenfolge enthält einen gültigen regulären Ausdruck Python
- 17. Überprüfen Sie, ob eine Ansicht Modelleigenschaft eine Zeichenfolge ist
- 18. In C# wie kann ich eine Zeichenfolge für den Windows-Verzeichnisnamen
- 19. Überprüfen Sie, ob eine Zeichenfolge eine beliebige mehrerer Elemente ist
- 20. Wie erhält man den Tree-Hash für einen bestimmten Verzeichnisnamen?
- 21. Überprüfen Sie Postgres Zugriff für einen Benutzer
- 22. CGDisplayCopyAllDisplayModes lässt einen gültigen Modus
- 23. Entfernen Sie Verzeichnisnamen von URL
- 24. Überprüfen Sie, ob eine Zeichenfolge eine Zahl ist
- 25. PHP: Überprüfen Sie eine gegebene Zeichenfolge ist eine gültige Nummer
- 26. PHP Überprüfen Sie, dass eine Zeichenfolge ein mathematischer Ausdruck ist
- 27. Wie überprüfen Sie eine Ruby-Zeichenfolge ist eine actual Zeichenfolge oder ein Blob Daten wie Bild
- 28. Speichern Sie einen Verweis auf eine Zeichenfolge
- 29. Ermitteln der gültigen Berechtigungen für einen anderen Benutzer in Python
- 30. Überprüfen Sie, ob eine Zeichenfolge mit http beginnt mit Javascript
"Gültigen Verzeichnisnamen" definieren Jedes Betriebssystem hat seine eigenen Einschränkungen. Definieren Sie, was legal ist und nicht, und validieren Sie dann dagegen. –
ein Verzeichnis, das nicht existiert, wäre ein ungültiges Verzeichnis, nein? –
Sie könnten nach einem 'allgemeinen' Verzeichnis Regex suchen. – Darkwater