イメージファイルを自分のWebサーバーにアップロードするupload_file.phpという名前のファイルがあります。私が抱えている問題は、アップロードプロセス中にファイル名のすべてのスペースをアンダースコアに置き換えたいということです。私はこれがstr_replace()を使って行うことができることを知っていますが、私はどこで私のコード内でstr_replace()を使うべきかわかりません。どんな助けでも大歓迎です。アップロードプロセス中にファイル名のすべてのスペースをアンダースコアに置き換えます。
<?php
require_once '../../config.php';
include '../secure.php';
if ($login_status != 1) exit();
if (isset($_GET['done'])) {
if ($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else {
if ($_POST['type'] == 'wallpaper') {
$directory = "../../files/";
}
else {
$directory = "../../files/images/";
}
$filename = basename($_FILES['file']['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
if (file_exists($directory . $_FILES["file"]["name"])) {
echo htmlspecialchars($_FILES["file"]["name"]) . " already exists. ";
}
elseif (((strpos($ext, "php") !== false) || $ext == 'aspx' || $ext == 'py' || $ext == 'htaccess') && !isset($allow_php_uploads)) {
echo 'Uploading PHP files disabled (<a target="_blank" href=""></a>)';
}
else {
move_uploaded_file($_FILES["file"]["tmp_name"], $directory . $_FILES["file"]["name"]);
header("Location: upload-complete.php?type=".htmlspecialchars($_POST['type'])."&newfile=". htmlspecialchars($_FILES["file"]["name"])."&id=".intval($_POST['id'])."");
}
}
} else { ?>
<head>
<style type="text/css">
body {
margin:0px;
padding:0px;
}
</style>
</head>
<form action="upload_file.php?done=1" method="post"
enctype="multipart/form-data">
<input type="file" name="file" id="file" style="max-width:230px;" />
<input name="id" type="hidden" value="<?php echo intval($_GET['id']);?>" />
<input name="type" type="hidden" value="<?php echo htmlspecialchars($_GET['type']);?>" />
<input type="submit" name="submit" value="Upload" />
</form>
<?php } ?>
優れた答えです。あなたのコードは完全に機能します。ありがとうございました。私は次のコードを変更しましたが、$ file = preg_replace( '/ \ s + /'、 '_'、$ _FILES ['file'] ['name']); $ file = str_replace( ""、 "_"、$ _FILES ['file'] ['name']); – 1Ton
私は最初の返信で、両方のコードで一重引用符と二重引用符の間のアンダースコアをタイプしたことがstackoverflowによって自動的に削除されていることに気付きました。 – 1Ton