場合によっては、ディレクトリ関数を再帰的に作成する必要があります。この場合、dirname() 関数 (パスのディレクトリ部分を取得するため) と mkdir() 関数 (ディレクトリを作成するため) を使用する必要があります。
まずは文法を普及させましょう:
ディレクトリ名
(PHP 4、PHP 5)
dirname — パスのディレクトリ部分を返します
説明 ?
文字列ディレクトリ名 (文字列$path
)
ファイルへのフルパスを含む文字列を指定すると、この関数はファイル名を削除した後のディレクトリ名を返します。
パラメータ ?
path
-
パス。
Windows では、スラッシュ (/) とバックスラッシュ () の両方をディレクトリ区切り文字として使用できます。他の状況では、スラッシュ (/) になります。
戻り値 ?
パスの親ディレクトリを返します。
path
にスラッシュがない場合は、現在のディレクトリを示すドット (「.」) が返されます。それ以外の場合、返される文字列は、path
の末尾の /component (最後のスラッシュとそれに続く部分) を削除した後の文字列です。ログを更新しますか?
版本 说明 5.0.0 dirname() 的操作从 PHP 5.0.0 版开始是二进制安全的。 4.0.3 在这个版本中,dirname() 被修正为 POSIX 兼容。 例 ?
例 #1 dirname() の例
<?php <br/> echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc<br> echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or on Windows)<br> echo "3) " . dirname("."); // 3) .<br> ?>
コメント ?
注:
dirname() は入力文字列に対して単純に動作し、実際のファイルシステムや ".." などのパス コンポーネントを認識しません。
注:
dirname() はロケールを認識するため、マルチバイト文字パスを含む正しいディレクトリ名を表示するには、setlocale() 関数を使用して一致するロケールを設定する必要があります。
注:
PHP 4.3.0 以降、古い機能では空の文字列が返される状況で、dirname() からスラッシュまたはドットが返されることがよくあります。
何が起こったかの例を以下で確認してください:
<?php <br/> <br> // PHP 4.3.0 以前<br> dirname('c:/'); // 返回 '.'<br> <br> // PHP 4.3.0 以后<br> dirname('c:/x'); // 返回 'c:'<br> dirname('c:/Temp/x'); // 返回 'c:/Temp'<br> dirname('/x'); // 返回 '/' (or '' on Windows)<br> <br> ?>
参照?
- ベース名() - パスのファイル名部分を返します
- pathinfo() - ファイルパス情報を返します
- realpath() -
正規化された絶対パス名を返します。
mkdir
(PHP 4、PHP 5)
mkdir — 新しいディレクトリを作成します
説明 ?
bool mkdir ( string$pathname
[, int$mode
= 0777 [, ブール$recursive
= false [, resource$context
]]] )パス名で指定された新しいディレクトリを作成してみます。
パラメータ ?
pathname
-
ディレクトリへのパス。
mode
-
デフォルトのモードは 0777 で、これは可能な最大アクセスを意味します。モードの詳細については、chmod() ページを参照してください。
注:
mode
で Windows では無視されます。モードを 8 進数として指定することもできます。これは、数値がゼロで始まる必要があることを意味します。モードは現在の umask によっても変更されます。これは umask() で変更できます。
recursive
-
pathname
で指定されたネストされたディレクトリの作成を許可します。 context
-
注: Context のサポートは PHP 5.0.0 で追加されました。コンテキストの説明については、「ストリーム」を参照してください。
戻り値 ?
成功した場合は
TRUE
を返し、失敗した場合はFALSE
を返します。ログを更新しますか?
バージョン 説明5.0.0 版本 说明 5.0.0 添加 recursive
参数。5.0.0 mkdir() 也可用于某些 URL 封装协议。参见支持的协议和封装协议 的列表看看 mkdir() 支持哪些 URL 封装协议。 4.2.0 mode
成为可选项。5.0.0 mkdir() は特定の URL でも動作します カプセル化プロトコル。 mkdir() が何をサポートしているかを確認するには、サポートされているプロトコルとカプセル化されたプロトコルのリストを参照してください。 URL カプセル化プロトコル。 4.2.0 はオプションになります。 例 ?
例 #1 mkdir() 例
<?php <br/> mkdir("/path/to/my/dir", 0700);<br> ?>
例 2
の使用recursive
パラメーターを指定した mkdir()<?php <br/> // Desired folder structure<br> $structure = './depth1/depth2/depth3/';<br> <br> // To create the nested structure, the $recursive parameter <br> // to mkdir() must be specified.<br> <br> if (!mkdir($structure, 0, true)) {<br> die('Failed to create folders...');<br> }<br> <br> // ...<br> ?>
コメント ?
注: セーフ モードが有効になっている場合、 PHP は、スクリプトの実行時に、スクリプト化されているディレクトリの UID (所有者) が実行中のスクリプトと同じかどうかを確認します。
参照?
- is_dir() - 指定されたファイル名がディレクトリであるかどうかを判断します
- rmdir() -
ディレクトリを削除する
再帰的にディレクトリを作成する関数:
/** * Create the directory recursively. * @param $path The directory to create, such as, /a/b/c/d/e/ * @param $mode The mode of the directory to create, such as, 0755, 0777. */ function RecursiveMkdir($path,$mode) { if (!file_exists($path)) { // The file is not exist. RecursiveMkdir(dirname($path), $mode); // Call itself. if(mkdir($path, $mode)) { // Call mkdir() to create the last directory, and the result is true. return true; } else { // Call mkdir() to create the last directory, and the result is false. return false; } } else { // The file is already exist. return true; } }
参考文献:
クリックしてリンクを開く

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









