Probleme regex
la chèvre
-
TucSky Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
TucSky Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je souhaite construire une regex qui oblige a ce que les données d'un fichier uploadé finissent soit par jpeg ou jpg ou png ou gif.
j'ai ecris ça:
mais ça ne fonctionne pas correctement car si le fichier fini par pdf par exemple, ça passe. En fait avec cette regex, il suffit que le fichier ce termine par une des lettres indiquées dans les () et ça passe.
Merci d'avance
je souhaite construire une regex qui oblige a ce que les données d'un fichier uploadé finissent soit par jpeg ou jpg ou png ou gif.
j'ai ecris ça:
if(preg_match("#([jpg]|[jpeg]|[png]|[gif])$#", $_FILES['image']['name']))
{
}
mais ça ne fonctionne pas correctement car si le fichier fini par pdf par exemple, ça passe. En fait avec cette regex, il suffit que le fichier ce termine par une des lettres indiquées dans les () et ça passe.
Merci d'avance
A voir également:
- Probleme regex
- Regex buddy - Télécharger - Édition & Programmation
- Regex tout sauf - Forum Java
- Regex ne commence pas par ✓ - Forum Programmation
- Regex pour evitez la répétition des caractères - Forum PHP
- Regex mot de passe ✓ - Forum Framework .NET
3 réponses
Donc tu veut filtrer les fichier uploadé et n'autoriser que ceux qui sont dans une liste précise ?
Si c'est ça, alors fait ça :
Bon bien sur ça fonctionne que si $_FILES['image']['name'] est au format "fichier.extension" :-)
Si c'est ça, alors fait ça :
// Récupère l'extension du fichier
$ext = end(explode(".", $_FILES['image']['name']));
// Définit ta liste "blanche" des extensions autorisées
$whitelist = array('gif','png' ,'jpg','jpeg');
// Vérifie que l'extension du fichier appartient bien à l'une de celle du tableau
if (!in_array(strtolower($ext),$whitelist)) {
// Extension non valide, on stop le traitement
exit;
}
Bon bien sur ça fonctionne que si $_FILES['image']['name'] est au format "fichier.extension" :-)
merci pour ta réponse, mais je viens de trouver une combine qui fonctionne parfaitement.
Sinon j'ai un cas analogue ou je recupère un $_POST qui doit impérativement finir par 10 ,11, 12, ou 13
ce qui donne
Mais évidement, j'ai le même problème que tout à l'heure à savoir 1 ça passe, 21 ça passe 2 ça passe etc...
Sinon pour info, voici comme j'ai fais pour le upload:
Sinon j'ai un cas analogue ou je recupère un $_POST qui doit impérativement finir par 10 ,11, 12, ou 13
ce qui donne
if(preg_match("#([10]|[11]|[12]|[13])$#", $_POST['num']))
{
}
Mais évidement, j'ai le même problème que tout à l'heure à savoir 1 ça passe, 21 ça passe 2 ça passe etc...
Sinon pour info, voici comme j'ai fais pour le upload:
if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
{
if ($_FILES['image']['size'] <= 10485760)
{
$infosfichier = pathinfo($_FILES['image']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
move_uploaded_file($_FILES['image']['tmp_name'], $emp . basename($_FILES['image']['name']));
}
else
{
$eimage = '* votre fichier doit etre au format jpg, jpeg, gif, png pour etre uploadé';
header("location:Ajouter.php?erreur2=".$eimage."");
exit();
}
}
else
{
$eimage = ' * votre fichier doit faire moins de 10 mo';
header("location:Ajouter.php?erreur2=".$eimage."");
exit();
}
}