0

jQuery/ajax を使用して画像をアップロードしたいサイトがあります。問題は、画像のファイル名がおかしい場合です。ドットやその他のように。このモードで試してみましたが、うまくいきません。たとえば、ファイル拡張子のドットを置き換えます。

image.test.png

なる

imagetestpng

しかし、私はこれが欲しい:

imagetest.png

これは私のコードです:

$name = $_FILES['upload']['name'];
$size = $_FILES['upload']['size'];
$name = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $name);
echo($name);

これを解決する方法は?ありがとう

4

2 に答える 2

2

まず、ファイル名を分解する必要があります。

$info = pathinfo($name);

次に、両方の部分にフィルターを適用します。

$name = preg_replace("/[^\w-]+/", "", $info['filename']);
// check if we have an extension
if (isset($info['extension'])) {
    $name .= '.' . preg_replace('/[^\w]/', '', $info['extension']);
}

デモ

于 2013-07-15T07:11:27.443 に答える
2

これを使用して、ファイル拡張子を保持しながらファイル名の文字を置き換えることができます。

$name = preg_replace('/[^a-zA-Z0-9_-]+/',
                     "",
                     pathinfo($name, PATHINFO_FILENAME)
        ) . (pathinfo($name, PATHINFO_EXTENSION)?"." . pathinfo($name, PATHINFO_EXTENSION):"");
于 2013-07-15T07:07:13.393 に答える