アップロードしたcsv等をUTF-8、行末LFに変換して保存する方法。

HTML

<form method="post" enctype="multipart/form-data">
  <input type="file" name="upfile">
</form>

PHP

function uploadFile() {
    // アップロードファイル名
    $file = $_FILES['upfile']['name'];
    // テンポラリファイル名
    $tmpfile = $_FILES['upfile']['tmp_name'];
    // 保存用ディレクトリ
    $saveDir = "/save/";
    // 変換済みファイルディレクトリ名
    $convertedFname = $saveDir . "upfile_converted.csv";
    
    // 確かにアップされたファイルかどうか
    if (!(is_uploaded_file($tmpfile))) {
        return false;
    }
    
    // 読み込み && UTF-8で書き換えるためのファイル操作
    if (($handle = fopen($tmpfile, 'r')) === false) {
        return false;
    }
    if (($out = fopen($convertedFname, 'w')) === false) {
        return false;
    }
    
    // UTF-8で書き換え
    rewind($handle);
    // ロード用csvを作成
    while (($line = fgets($handle)) !== false) {
        // 行末改行コードの統一とSJIS-winからUTF-8への変換
        fwrite($out, mb_convert_encoding(preg_replace("(\r\n$|\r$)", "\n", $line), "UTF-8","SJIS-win"));
    }
    fclose($handle);
    fclose($out);
    
    // アップロードされたそのままのテンポラリファイルをファイル格納パスにコピーする
    if (move_uploaded_file($tmpfile, $saveDir . $file) === false) {
        reurn false;
    }
    
    return true;
}