1

次の問題があります: ファイルのアップロードを作成しました。アップローダーは正常に動作します。アップローダで、新しいファイル名を生成します (空白なし、すべて小文字で書かれているなど)。そのために、関数を作成しました。しかし、ドイツ語の「ウムラウテ」(ä、ü、ö、ß) にはまだ問題があります。関数を使用すると、関数はそれらを置き換えませんでした。私はいつも「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'] から取得されます。そして、ドイツ語の「ウムラウテ」が置き換えられます。しかし、この場合ではありません - ファイルをアップロードします。

なぜなのかご存知ですか?

4

1 に答える 1

0

これをタグ内に追加してみてはいかがでしょうか。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

また、ページのエンコーディングは次のUTF8,ように追加する必要があります。

おそらくそうではありません。php ファイルが実際に utf-8 エンコーディングで保存されていることを確認してください。

もっとお手伝いできることがあれば教えてください

于 2013-06-28T07:10:38.467 に答える