文字列が有効なディレクトリ名であるかどうかをチェックするネイティブ関数またはユーザー関数が必要です。 私はPHPのドキュメントを見てきましたが、既存のディレクトリかどうか、そしてディレクトリの有効な名前ではないかどうかを確認する関数is_dir
しか見つかりませんでした。有効なディレクトリ名の文字列を確認してください
答えて
これはうまくいくはずです。
は、これがうまくいく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. */
}
を参照してください。 2番目と3番目の引数を必要に応じて変更できます。
if (!mkdir($directory, 0700, true)) {
die('Error: Illegal directory.');
}
ディレクトリ名が有効である場合、これがディレクトリを作成することに注意してください。しかし、私の謙虚な意見では(そしてあなたの特定のユースケースを知らずに)、これはディレクトリ名の妥当性のチェックを処理する多くの言語で好まれる方法です。ディレクトリを作成しようとして失敗した場合は、失敗したことを伝えてください。
この利点は、コードファイルシステムにとらわれず、ディレクトリを検証して作成するのがエラーの起こりやすい方法であることです。これは、他のプロセスやスレッドが、ディレクトリ、および作成時に表示されます。
この方法では、ディレクトリをすぐに作成することを前提としているという欠点があります。
もちろん、mkdir()
が失敗する可能性がある複数の理由があります(たとえば、不十分な権限、ハードウェア障害、無効なディレクトリ名など)。そのため、エラーに基づいてさまざまなエラーメッセージを表示することができます。残念ながら、PHPは他の言語ほど頑強な例外処理をしていませんが、この道を踏み出すべきである場合、が生成する可能性のあるさまざまな警告をキャッチするために、このanswerのようなアプローチを使用できるはずです。
'mkdir( 'dirname/test /../ temp'、0700、true);' @GregoryBurnsのような特定のもののために、 '$ directory'という名前をフィルタリングすることは間違いなく役に立ちます。 ... – Wilt
- 1. Lua - 文字列に有効な文字が含まれていることを確認してください
- 2. 文字ループの文字列を確認してください
- 3. 文字の値が有効なRオブジェクト名であることを確認してください
- 4. 文字列の長さを確認してください -
- 5. Moment.jsで有効なhh:mmフォーマットを確認してください
- 6. 有効なファイル拡張子を確認してください
- 7. 文字列の書式を確認してください
- 8. 文字列の末尾を確認してください
- 9. 列ヘッダーの開始文字を確認してください
- 10. C++:文字列が "strtol"を使用する有効な整数かどうか確認してください
- 11. Parsley.jsカスタムバリデータで文字列を確認してください
- 12. ワイルドカードリゾルバでドメインの有効性を確認してください
- 13. OracleDependencyの有効性を確認してください
- 14. 文字列の最後の文字を確認してください
- 15. ディレクトリまたはファイル名の絶対パスが有効かどうかを確認してください
- 16. QtでUTF-8文字列が有効であることを確認してください
- 17. JSONPath文字列がC#で有効であることを確認してください
- 18. 文字列の一部が別の文字列に入っていないか確認してください。
- 19. Firebase - 効率的にユーザ名を確認してください
- 20. 文字列に別の文字列が含まれていないか確認してください。
- 21. Groovy:文字列に複数の文字列が含まれていないか確認してください
- 22. 長さではなくバイト単位の文字列長の有効性確認
- 23. 数字以外の文字の配列を確認してください
- 24. 正確な部分文字列が文字列内にあるかどうか確認してください。
- 25. React-Native:文字列に文字列が含まれていないか確認してください。
- 26. 文字列にリストにない文字が含まれていないか確認してください。
- 27. Numpy:配列の文字列データ型を確認してください
- 28. C#特定の長さの文字列を確認してください
- 29. 文字列にルビの数字だけが含まれていないか確認してください。
- 30. 文字列が数字であることを確認してください
"有効なディレクトリ名"を定義する各OSにはそれぞれ独自の制限があります。正当なものとそうでないものを定義し、それに対して検証します。 –
存在しないディレクトリは無効なディレクトリですか、いいえ? –
'一般的な'ディレクトリ正規表現を検索することができます。 – Darkwater