我有一个网站,我想用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);
如何解决这个问题? 感谢
答案 0 :(得分:2)
您可以使用它来替换文件名中的字符,同时保留文件扩展名。
$name = preg_replace('/[^a-zA-Z0-9_-]+/',
"",
pathinfo($name, PATHINFO_FILENAME)
) . (pathinfo($name, PATHINFO_EXTENSION)?"." . pathinfo($name, PATHINFO_EXTENSION):"");
答案 1 :(得分: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']);
}