LoginSignup
3
5

More than 5 years have passed since last update.

PHPでファイルダウンロードするときのファイル名(Windows)

Posted at

DBに登録してある文字列をファイル名にする

PHPで構築したWebサービスで、何らかのファイルをダウンロードするとして、ファイル名をDB(MySQL)に登録してある該当レコードのテキスト値にしたいというとき。
※MySQLの文字コードはUTF-8
その値には"ファイル名に使えない文字"が含まれているかもしれないし、改行コードが含まれているかもしれない、なんて場合は…

コード

filename.php
$file_name = DBから取ってきたテキスト;
// 改行コードを空白に変換
$file_name = str_replace(array("\r\n","\r","\n"), " ", $file_name);
// HTMLエンティティを文字に戻す
$file_name = htmlspecialchars_decode($file_name);
// ファイル名無効文字の全角化
$file_name = str_replace(array("\\","/",":",",",";","*","?","<",">","|"), array("¥","/",":",",",";","*","?","<",">","|"), $file_name);
// エンコード
$file_name = mb_convert_encoding($file_name, 'SJIS-win', 'UTF-8');

DBにどんな値が入り得るかによると思いますが。

あと、Windows向けです。
Macだとどうなるんでしょう?

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5