8
votes

Valider le nom de fichier à l'aide de PHP ("A-Z", "0-9" et "-")

Quelle est la meilleure façon de valider un nom de fichier en utilisant php et comment puis-je le faire?

Je veux voir si le nom de fichier ne contient que "A-Z", "0-9" et "-". Assurez-vous également que le nom de fichier n'a pas de lettres majuscules. P>

$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';
}


1 commentaires

Sur une matière secondaire: votre message sinon est trompeur, car il semble que cela semble se référer au contenu du fichier, pas de noms.


3 Réponses :


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

1 commentaires

ne fonctionne pas avec une extension. Exemple: exemple.ext



11
votes
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. ';

}
Change ext with your required extension. Or better yet, strip it with pathinfo, and use finfo to ensure the file is of the correct type.

1 commentaires

Merci Michael, c'est pourquoi je n'ai pas pu travailler. J'ai oublié l'extension de fichier ...



1
votes

L'utilisation simplement sur REGEX fera le travail pour vous

([a-z0-9-]+)


3 commentaires

Ceci ignore toute extension de fichier


Pourquoi les soulignements ne sont-ils pas autorisés?


@bart Je ne sais pas, il a été demandé dans cette question à valider uniquement ce que votre regex valide. Si vous souhaitez également inclure des traits de soulignement, ce serait ([A-Z0-9 -_] +)