アップロードした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;
}