夜の歌

プログラミング、音楽、本について緩く書いていきます。

複数パスのディレクトリを作成する

複数パスのディレクトリを作成を作成したくて作成。作成したいディレクトリのパスはCSVファイルに記載。 ●test.csv

vagrant/test2/haro/komika,vagrant/test2/nanika/yosi,vagrant/test2/haro/midori,vagrant/natu/haro/komika


●index.php

<!DOCTYPE html>
<html>
<head>
   <title>ディレクトリ作成</title>
</head>
<body>
<form action="createpath.php" method="post" enctype='multipart/form-data'>
    <input type="file" name="getcsv" size="30">
    <input type="submit" value="アップロード">
</form>
</body>
</html>


●createpath.php

<?php
//----------------------------
// ファイル読み込み
//----------------------------
if (is_uploaded_file($_FILES["getcsv"]["tmp_name"])) {
    $file_tmp_name = $_FILES["getcsv"]["tmp_name"];
    $file_name     = $_FILES["getcsv"]["name"];

    // アップロードファイルの拡張子を判定
    if (pathinfo($file_name, PATHINFO_EXTENSION) != 'csv') {
        echo 'CSVファイルのみ対応しています。';
        exit();
    }

    // CSVからデータ取得
    $fp                    = fopen($file_tmp_name, "r");
    $directory_paths   = '';
    while (($csv_data = fgetcsv($fp, ",")) !== FALSE) {
        $directory_paths = $csv_data;
    }
}

//----------------------------
// ディレクトリ作成
//----------------------------
foreach ($directory_paths as $k => $directory_path) {
    // ディレクトリ作成
    $result = create_directroy($directory_path);
}


/*
* ディレクトリ作成関数
* @param string directory_path
*/
function create_directroy($directory_path)
{
    $directory_name    = explode('/', $directory_path);
    $create_path   = '';
    foreach ($directory_name as $key => $value) {
        $create_path .= '/' . $value;
        if (!file_exists($create_path)) {
            mkdir($create_path);
        }
    }
}


作成中に分かったのだけどmkdirメソッドの第三引数にtrueを設定すると、入れ子構造でディレクトリが作成できるようだ。。まあ、良い。次だ、次。


参考

PHPでCSVファイルをアップロードする(そして配列に変換) - Qiita

PHP: mkdir - Manual