У меня проблема: Я создал файл-загрузку. Загрузитель работает отлично. В загрузчике я генерирую новое имя файла (без пробелов, все написанное маленькими буквами и т. Д.). Для этого я создал функцию. Но у меня все еще есть проблемы с немецким «Умлаут» (ä, ü, ö, ß). Когда я использую функцию, функция не заменила их. Я всегда получаю файлы с именем «ta ?? nzer.pdf».Не могу выйти из таких знаков, как ä, ö, ü from filename
Вот код PHP:
$temp = explode(".", $_FILES["file"]["name"]);
$newname = generate_alias($temp[0]);
$_FILES["file"]["name"] = $newname.".".$temp[1];
move_uploaded_file($_FILES["file"]["tmp_name"],
"../media/presse/" . $_FILES["file"]["name"]);
А вот функции:
function generate_alias($text) {
# Leerzeichen an Anfang und am Ende entfernen
$text = trim($text);
# Umlaute ersetzen
$upas = Array("ä" => "ae", "ü" => "ue", "ö" => "oe", "Ä" => "Ae", "Ü" => "Ue", "Ö" => "Oe","ß" => "ss","á"=>"a","Á"=>"A","é"=>"e","è"=>"e","ê"=>"e","É"=>"E");
$text = strtr($text, $upas);
# Alles klein schreiben
$text = strtolower($text);
#Sonderzeichen entfernen
$not_allowed = array("/", "|", "\\", "_", "(", ")", "{", "}", "[", "]", "!", "\"", "'", "‘", "$", "&", "?", "=", "*", "#", ";", ",", ":", ".", "<", ">", "^", "°");
$text = str_replace($not_allowed, "", $text);
# Leerräume durch Bindestrich ersetzen
$text = strtr ($text, " ", "-");
return $text;
}
Я использую эту функцию также для создания псевдонима из названия статьи. Заголовки статьи взяты из $ _POST ['title']. И там заменены немецкие «Умлаут». Но не в этом случае - загрузка файла.
Знаете ли вы, почему?
Возможно, у вас возникла проблема с набором символов, отправляемым браузером. Вы можете посмотреть [здесь] (http://www.w3schools.com/tags/att_form_accept_charset.asp) –