Potrzebuję funkcji natywnej lub wykonanej przez użytkownika, która sprawdza, czy ciąg znaków jest prawidłową nazwą katalogu. Przeglądałem dokumentację PHP i mogę znaleźć tylko funkcję is_dir
, która sprawdza, czy jest to istniejący katalog, czy nie, a nie jest poprawną nazwą katalogu.Sprawdź ciąg dla poprawnej nazwy katalogu
Odpowiedz
To powinno działać dla Ciebie.
Zobacz 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. */
}
to będzie działać. Możesz modyfikować drugi i trzeci argument do swoich potrzeb.
if (!mkdir($directory, 0700, true)) {
die('Error: Illegal directory.');
}
Pamiętaj, że utworzy to katalog, jeśli nazwa katalogu jest prawidłowa. Jednak w mojej skromnej opinii (i bez znajomości konkretnego przypadku użycia) jest to preferowany sposób w większości języków do obsługi sprawdzania poprawności nazwy katalogu. Po prostu spróbuj utworzyć katalog, a jeśli się nie powiedzie, powiedz im, że się nie udało.
Zaletą tego jest to, że zachowuje on agnostyczny system plików kodu i jest to najmniej podatna na błędy metoda sprawdzania poprawności i tworzenia katalogu, ponieważ żaden inny proces ani wątek nie będzie w stanie utworzyć katalogu pomiędzy podczas sprawdzania poprawności katalog i kiedy go tworzysz.
Wadą jest to, że ta metoda zakłada, że chcesz natychmiast utworzyć katalog.
Oczywiście, istnieje wiele powodów, które mkdir()
może zawodzić (np wystarczających uprawnień, awaria sprzętu, nieprawidłowa nazwa katalogu, itd.), Więc może chcesz wyświetlać różne komunikaty o błędach do użytkownika w oparciu o błędzie. Niestety, PHP nie ma tak solidnej obsługi wyjątków, jak inne języki, ale jeśli chcesz iść tą drogą, powinieneś być w stanie zastosować podejście takie jak w tym answer, aby uchwycić różne ostrzeżenia, które może wygenerować mkdir()
.
Może powinieneś spróbować tego: 'mkdir ('dirname/test /../ temp', 0700, true);' Z pewnością warto byłoby filtrować nazwę '$ directory' dla pewnych rzeczy, takich jak @GregoryBurns sugeruje w swojej odpowiedzi ... – Wilt
- 1. Sprawdź ciąg zawierający URL dla "http: //"
- 2. Sprawdź, czy w poprawnej kolejce wysyłkowej w Swift 3
- 3. importowanie poprawnej metody AssertThat dla testu Robolectric
- 4. Sprawdź całkowity rozmiar pliku określonego katalogu dla określonego użytkownika.
- 5. Sprawdź, czy ciąg zawiera inny ciąg
- 6. Odczytuj nazwy plików z katalogu
- 7. Excel VBA Sprawdź, czy istnieje błąd katalogu
- 8. Wyszukaj ciąg wewnątrz nazwy pliku w podkatalogach
- 9. Sprawdź, czy ciąg zawiera podłańcuch
- 10. Sprawdź ciąg tylko dla cyfr i jednego opcjonalnego miejsca dziesiętnego.
- 11. Sprawdź istniejącego katalogu nie w Ruby + Chef
- 12. Regex dla plików w katalogu
- 13. Standaryzuj ciąg dla nazwy pliku, usuń akcenty i znaki specjalne
- 14. Ruby, sprawdź, czy ciąg znaków jest prawidłowy?
- 15. Sprawdź dwóch dziesiętnych liczby cyfr w ciąg
- 16. Nazwy folderów w języku Python w katalogu
- 17. Uzyskaj nazwy plików obrazów w katalogu
- 18. Ścieżka Git pasująca do dowolnej nazwy katalogu
- 19. Git: Zmienianie nazwy katalogu w oddziale
- 20. Sprawdź, czy ciąg zawiera określony ciąg przy użyciu tablicy
- 21. Sprawdź nazwy/wartości argumentów w definicji/wykonywaniu funkcji JavaScript
- 22. Sprawdź, czy ciąg znaków jest adresem URL
- 23. Sprawdź, czy ciąg zawiera znaki spoza cyfr
- 24. Sprawdź, czy ciąg zawiera słowo w tablicy
- 25. Sprawdź, czy ciąg zawiera wiodące litery
- 26. Sprawdź, czy ciąg zawiera tylko zestaw liter
- 27. Sprawdź, czy ciąg ruby zawiera białe spacje.
- 28. Sprawdź, czy ciąg jest w ArrayList ciągów
- 29. Sprawdź, czy ciąg zawiera datę, czy nie.
- 30. Sprawdź, czy ciąg jest Integer z jQuery
Definiowanie "prawidłowej nazwy katalogu" Każdy system operacyjny ma własne ograniczenia. Określ, co jest legalne, a co nie, a następnie potwierdź to. –
katalog, który nie istnieje, byłby nieprawidłowym katalogiem, nie? –
Możesz wyszukać "ogólny" katalog regex .. – Darkwater