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'; }
3 Réponses :
if(preg_match('/^[a-z0-9-]+$/',$file)) { // $file is valid } else { // $file is not valid }
ne fonctionne pas avec une extension. Exemple: exemple.ext
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.
Merci Michael, c'est pourquoi je n'ai pas pu travailler. J'ai oublié l'extension de fichier ...
L'utilisation simplement sur REGEX fera le travail pour vous
([a-z0-9-]+)
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 -_] +) code>
Sur une matière secondaire: votre message
sinon code> est trompeur, car il semble que cela semble se référer au contenu du fichier, pas de noms.