使用PHP验证文件名(“a-z”,“0-9”和“ - ”)

时间:2011-12-14 08:26:02

标签: php file-upload filenames validation

使用PHP验证文件名的最佳方法是什么?我该怎么办?

我想看看文件名是否只包含“a-z”,“0-9”和“ - ”。还要确保文件名没有大写字母。

$file = 'the-name.ext';

if ($file == 'only contains a-z, 0-9 or "-"' // HOW TO
&& $file == 'lowercasse'  // HOW TO
&& $file == 'a-z')  // HOW TO
{
    // upload code here
}
else{
    echo 'The file "' . $file . '"was not uploaded. The file can only contain "a-z", "0-9" and "-". Allso the files must be lowercasse. ';
}

我最终做了这样的事情,以摆脱文件扩展名:

$filename = 'fil-name.jpg';
$filname_without_ext = pathinfo($filename, PATHINFO_FILENAME);
if(preg_match('/^[a-z0-9-]+$/',$filname_without_ext)) {
   echo'$file is valid';
} else {
   echo'$file is not valid';
}

3 个答案:

答案 0 :(得分:9)

if(preg_match('/^[a-z0-9-]+\.ext$/', $file)) {
    // .. upload
} else {
    echo 'The file "' . $file . '"was not uploaded. The file can only contain "a-z", "0-9" and "-". Allso the files must be lowercase. ';

}

使用所需的扩展名更改ext。或者更好的是,使用pathinfo删除它,并使用finfo确保文件的类型正确。

答案 1 :(得分:2)

if(preg_match('/^[a-z0-9-]+$/',$file)) {
   // $file is valid
} else {
   // $file is not valid
}

答案 2 :(得分:1)

只需使用正则表达式即可为您完成工作

([a-z0-9-]+)

此模式将匹配a-z,0-9和 -