封裝的代碼:
🔒 隱藏內容:登錄後可查看
function checkOrCreateDirectory($dir, $prefix, $newDirName) {
$directories = array_filter(glob($dir . '/*'), 'is_dir');
foreach ($directories as $directory) {
$directoryName = basename($directory);
if (strpos($directoryName, $prefix) === 0) {
return $directoryName;
}
}
$newDirectory = $dir . '/' . $prefix . $newDirName;
if (!file_exists($newDirectory)) {
mkdir($newDirectory, 0777, true);
}
return $prefix . $newDirName;
}
這個函數會接收三個參數:需要檢查的目錄名、需要檢查的前綴以及要創建的新目錄名。它會使用 glob() 函數獲取目錄中的所有子目錄,並使用 array_filter() 函數過濾掉所有的非目錄文件。然後,它會循環遍歷所有目錄並檢查它們的名稱是否以指定的前綴開頭。如果找到了一個匹配的目錄,函數會立即返回該目錄名稱。否則,它會創建一個新目錄並返回其名稱。
注意,這個函數使用了 file_exists() 函數來檢查新目錄是否已經存在,以避免重複創建同名目錄。如果您希望在創建新目錄時應用不同的訪問權限,可以修改 mkdir() 函數的第三個參數。
標註好註釋的函數
🔒 隱藏內容:會員可查看
/**
* 檢查指定目錄是否存在前綴admin-的目錄,如果存在便返回目錄名稱,不存在則創建一個目錄。
* @param string $dir 需要檢查的目錄名。
* @param string $prefix 需要檢查的前綴。
* @param string $newDirName 要創建的新目錄名。
* @return string 返回目錄名稱。
*/
function checkOrCreateDirectory($dir, $prefix, $newDirName) {
// 使用 glob() 函數獲取目錄中的所有子目錄。
$directories = array_filter(glob($dir . '/*'), 'is_dir');
// 循環遍歷所有目錄。
foreach ($directories as $directory) {
// 使用 basename() 函數獲取目錄名稱。
$directoryName = basename($directory);
// 檢查目錄名稱是否以指定的前綴開頭。
if (strpos($directoryName, $prefix) === 0) {
// 如果找到匹配的目錄,立即返回目錄名稱。
return $directoryName;
}
}
// 如果沒有找到匹配的目錄,創建新目錄。
$newDirectory = $dir . '/' . $prefix . $newDirName;
// 檢查新目錄是否已經存在,如果不存在則創建目錄。
if (!file_exists($newDirectory)) {
// 使用 mkdir() 函數創建新目錄。
mkdir($newDirectory, 0777, true);
}
// 返回新目錄名稱。
return $prefix . $newDirName;
}