파일을 업로드 할 수있는 webform이 있습니다. 이 코드는 PHP 5.2.5 내 로컬 컴퓨터에서 잘 작동하고 PHP 5.2.0로 서버에서 작동하지 않습니다,문자를 바꾼다 'do 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");
내 문제가 : 특수 문자 나 사용자가 다음과 같은 기능을 대체합니다.
local output: aeae432__.png
server output: ae
문자가 ´
인 것 같습니다.
는 서버가 mbstring 확장이 설치되어 있는가.? – apokryfos
'mb_detect_encoding()'은 당신이 생각하는 것을하지 않습니다. 사실 기본적으로 쓸모가 없습니다. 또한, iconv ($ in_charset, 'US-ASCII // TRANSLIT', $ ret);와 수동 대체를 모두하는 것은 불필요합니다. /// 어쨌든, 필자의 팁은 파일의 원래 이름에 전혀 신경 쓰지 않는 것입니다. 자신을 임의로 할당하고 다운로드 헤더에서 원래 이름을 사용하십시오. –