Проверьте имя файла с помощью PHP («az», «0-9» и «-») - PullRequest
6 голосов
/ 14 декабря 2011

Каков наилучший способ проверки имени файла с помощью 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 ]

9 голосов
/ 14 декабря 2011
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, чтобы убедиться, что файл имеет правильный тип.

2 голосов
/ 14 декабря 2011
if(preg_match('/^[a-z0-9-]+$/',$file)) {
   // $file is valid
} else {
   // $file is not valid
}
1 голос
/ 14 декабря 2011

Простое использование регулярных выражений сделает работу за вас

([a-z0-9-]+)

Этот шаблон будет соответствовать аз, 0-9 и -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...