アップロードするファイルの名前を変更できるかどうかは疑問でした。私がやろうとしているのは、ユーザーがヨーロッパ言語で特殊文字のような特殊文字を含むかもしれないファイルをアップロードするということです。PHPを使用してファイルをアップロードする前に特殊文字を置き換えます。
move_uploaded_fileコマンドを使用する前に、通常の文字で特殊文字を変更/ preg_replaceすることができます。これにより、ファイルがアップロードされ、通常の文字だけの新しい名前で保存されます。
アップロードするファイルの名前を変更できるかどうかは疑問でした。私がやろうとしているのは、ユーザーがヨーロッパ言語で特殊文字のような特殊文字を含むかもしれないファイルをアップロードするということです。PHPを使用してファイルをアップロードする前に特殊文字を置き換えます。
move_uploaded_fileコマンドを使用する前に、通常の文字で特殊文字を変更/ preg_replaceすることができます。これにより、ファイルがアップロードされ、通常の文字だけの新しい名前で保存されます。
// Get the original file name from $_FILES
$file_name= $_FILES['file']['name'];
// Remove any characters you don't want
// The below code will remove anything that is not a-z, 0-9 or a dot.
$file_name = preg_replace("/[^a-zA-Z0-9.]/", "", $file_name);
// Get the location of the folder to upload into
$location = 'path/to/dir/';
// Use move_uploaded_file()
move_uploaded_file($_FILES["file"]["tmp_name"], $location.$file_name);
@ 472084、あなたはZipファイルやサブディレクトリやファイルの中に特殊文字を入れてしまったので、長年の問題を解決しました。すばらしいです。 :) – NullPointer
これは素晴らしいですが、ファイル拡張子にもドットを追加する必要があります。 $ file_name = preg_replace( "/ [^ a-zA-Z0-9。] /"、 "、$ file_name); –
それは動作しますが、パスの場所にファイル名を変更したり名前を変更したりしないでください – jned29
はあなたが$_FILES
からアップロードされたファイルの元のファイル名を取得することができ、そして、あなたの「特別な」バージョンを作成することができ、より訪問how to replace special characters with the ones they're based on in PHP?
を知るために、この仲間
$result = iconv("UTF-8", "ASCII//TRANSLIT", $text);
を使用するようにしてくださいその中の文字をstrtr
(この場合は最も良い一致と見なされます)、str_replace
、preg_replace
または他の文字列処理関数に置き換えます。
最良のアプローチは、あなたがしたいことが何であるかによって異なります。
あなたはこのようにそれを行うことができ、文字列にしたい文字を置き換えるために、単純な機能strip_special_chars()
を書く
$tmp_name = $_FILES["file"]["tmp_name"];
$name = strip_special_chars($tmp_name);
move_uploaded_file($name, "path/to/dir/");
あなたの答えとサンプルコードをお寄せいただきありがとうございました。 – 125369
また、あなたは、このような特殊文字のための機能を使用することができます。
function safename($theValue)
{
$_trSpec = array(
'Ç' => 'C',
'Ğ' => 'G',
'İ' => 'I',
'Ö' => 'O',
'Ş' => 'S',
'Ü' => 'U',
'ç' => 'c',
'ğ' => 'g',
'ı' => 'i',
'i' => 'i',
'ö' => 'o',
'ş' => 's',
'ü' => 'u',
);
$enChars = array_values($_trSpec);
$trChars = array_keys($_trSpec);
$theValue = str_replace($trChars, $enChars, $theValue);
$theValue=preg_replace("@[^A-Za-z0-9\-_.\/][email protected]","-",$theValue);
$theValue=strtolower($theValue);
return $theValue;
}
許可については注意してください。ファイル拡張子。その後、
そして、あなたのオリジナルの一時ファイル名を変更し、
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetFile = safename($targetFile);
$location = 'path/to/dir/';
move_uploaded_file($_FILES["file"]["tmp_name"], $location.$targetFile);
それははい、可能です。何を試しましたか? –