ファイルをアップロードできるWebフォームがあります。このコードは、PHP 5.2.5で私のローカルマシン上で正常に動作し、それはPHP 5.2.0で、サーバ上で動作していないこと、文字を置換する `does not work
function createSafeFilenameForQuestion($filename){
$filename = str_replace(" ", "_", $filename);
$search = array("ä", "ö", "ü", "ß", "Ö", "Ä", "Ü");
$replace = array("ae","oe","ue","ss","Oe","Ae","Ue");
$ret = str_replace($search, $replace, $filename);
$in_charset = mb_detect_encoding($filename);
$ret = iconv($in_charset, 'US-ASCII//TRANSLIT', $ret);
$ret = preg_replace("/\s/i", "_", $ret);
$ret = preg_replace("/[^0-9a-z_\.]/i", "", $ret);
$filename = mb_strtolower($ret);
return $filename;
}
createSafeFilenameForQuestion("ä#`´+4`32 _.png");
私の問題がある:特殊文字Iユーザー次の関数を置き換えます。
local output: aeae432__.png
server output: ae
文字は´
と思われます。
を持っていますか? – apokryfos
'mb_detect_encoding()'はあなたの考えをしません。実際には基本的に役に立たない。また、iconv($ in_charset、 'US-ASCII // TRANSLIT'、$ ret);と手動置換の両方を行うことは冗長です。 ///いずれの場合でも、私のヒントは、ファイルの元の名前について全く気にしないことです。自分自身(おそらくランダムなもの)を割り当て、ダウンロードヘッダーの元の名前だけを使用します。 –