【问题标题】:Cant get out signs like ä, ö, ü from filename无法从文件名中取出 ä、ö、ü 等符号
【发布时间】:2013-06-25 21:24:31
【问题描述】:

我有以下问题: 我创建了一个文件上传。上传者工作正常。在上传器中,我生成了一个新的文件名(没有空格,所有内容都用小写字母等等)。 为此,我创建了一个函数。但我仍然对德语“元音变音”(ä、ü、ö、ß)有疑问。 当我使用该功能时,该功能并没有取代它们。我总是得到名为“ta??nzer.pdf”的文件。

这里是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']。那里的德语“元音变音”被替换了。但不是在这种情况下 - 上传文件。

你知道为什么吗?

【问题讨论】:

  • 浏览器发送的字符集可能有问题。你可以看看here

标签: php file upload replace


【解决方案1】:
猜你喜欢
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2012-08-14
  • 1970-01-01
  • 2021-06-08
  • 2015-03-17
  • 2012-05-20
相关资源
最近更新 更多