Page 1 sur 1

Un truc m'échappe ;)

Posté : 06 sept. 2015, 22:13
par Masterkey
Bonsoir,
J'ai passé un bon moment a trouver un fichier qui était en double sur mon site. Un fichier avec le même nom mais avec une casse différente. J'ai écris un bout de code mais qui malheureusement ne fait pas ce que je veux :(
Le but est de n'avoir que les fichiers ou il traine une majuscule mais pour les test j'ai rajouté le else

Mon code :

Code : Tout sélectionner

$dir = 'uploads/doc'; $iterator = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS); echo "<strong>Fichier dont les noms n'est pas complètement en minuscules :</strong><br /><br />"; foreach(new RecursiveIteratorIterator($iterator) as $file) { if (pathinfo($file,PATHINFO_EXTENSION) == 'pdf' or pathinfo($file,PATHINFO_EXTENSION) == 'xls') { if (ctype_lower($file->getfilename())) { echo "<font color='red'>".$file."</font><br />"; } else { echo $file."<br />"; } } }
Pour le test j'ai évidement un fichier avec une majuscule. Il ne m'affiche pas mon fichier en rouge mais il l'affiche quand même en noir ?

Re: Un truc m'échappe ;)

Posté : 06 sept. 2015, 22:20
par or 1
echo $file->getfilename();
if (ctype_lower($file->getfilename()))

qu'est-ce que cela affiche quand le nom du fichier comprend une majuscule ?

Re: Un truc m'échappe ;)

Posté : 06 sept. 2015, 22:50
par Masterkey
Qu'il comprenne une majuscule ou pas, il m'affiche mon fichier en noir. Il passe donc dans le else alors qu'il devrait m'afficher mon fichier en rouge via le if.

Re: Un truc m'échappe ;)

Posté : 06 sept. 2015, 23:32
par Masterkey
Je me réponds car j'ai trouvé la réponse et surtout pour les futurs coincé comme moi ;)

J'ai remplacé le code :

Code : Tout sélectionner

if (ctype_lower($file->getfilename()))
par le code :

Code : Tout sélectionner

if (preg_match("#[A-Z ]#",$file->getfilename()))
merci pour or 1 qui a regardé mon post. Je marque résolu mais j'aimerais bien comprendre quand même pourquoi l'autre code n'a pas fonctionné. Au cas ou j'avais supprimé les chiffres et underscores des noms de fichiers mais même résultat.