J'ai besoin de is_dir()
pour ne pas se soucier si le dossier ou l'argument est majuscule ou minuscule, ou un mélange de haut et bas. Par conséquent, si le nom de fichier est "Mon dossier" et que je cours is_dir("mY FoLdEr")
, le résultat devrait être true
.
Répondre
Ce n'est pas à la hauteur de PHP. Cela dépend du système d'exploitation et du système de fichiers sur lesquels PHP s'exécute. Windows n'est pas sensible à la casse, mais chaque version d'Unix/Linux est sensible à la casse. Permettez-moi de le dire autrement: is_dir()
est fondamentalement une enveloppe à un appel système ou il utilisera les résultats des appels système sur les informations de fichier. Ces appels système retourneront quelque chose ou non si, selon les règles de ce système d'exploitation et système de fichiers, un fichier est trouvé avec le nom correspondant. PHP ne peut pas changer cela, donc vous ne pouvez pas faire en sorte que is_dir()
soit insensible à la casse sur Linux. Le mieux que vous pouvez faire est d'obtenir une liste de fichiers dans le répertoire et de les parcourir pour tester si une comparaison insensible à la casse correspond à ce que vous cherchez.
Remarque: vous pourriez avoir plusieurs hits, par exemple "HOME" et "Home" seront tous deux "home". Que ferait une telle fonction (que vous voulez) dans ce cas?
Vous pouvez également modifier tous vos noms de fichier en minuscules, puis vous pouvez utiliser la version minuscule de votre entrée pour rechercher le fichier spécifié.
façon sale pourrait être obtenir la liste de tous les répertoires dir et comparez-leur strtolower() - noms ées avec le nom souhaité
Vous pouvez utiliser des expressions régulières. Je ne suis pas tout à fait sûr de la syntaxe en php:
is_dir("[mM][yY] [fF][oO][lL][dD][eE][rR]")
Ils peuvent être un meilleur regexp
pour elle.
L'utilisation d'expressions régulières n'est pas possible dans 'is_dir'. Cependant, il existe une fonction 'glob' pour un effet similaire:' glob ('{mM} {yY} {fF} {oO} {lL} {dD} {eE} {rR}', GLOB_BRACE) ' – daluege
J'ai rencontré un problème pour valider un chemin de répertoire. Je ne voulais pas avoir un mélange de répertoires de noms similaires dans différents cas. c'est-à-dire mon \ dir et My \ Dir. J'ai essayé l'approche grep mentionnée par Filipglob('{mM}{yY} {fF}{oO}{lL}{dD}{eE}{rR}', GLOB_BRACE)
mais j'ai trouvé que si le nom du répertoire était plus long qu'environ 8 caractères, il s'arrêterait. Donc, ceci est ma solution pour une insensible à la casse is_dir()
;
$path = '/';
$parts = explode(DIRECTORY_SEPARATOR, '/My/DirecTorY/pATh');
foreach($parts as $key => $dir) {
$isUnique = true;
if (is_dir($path . DIRECTORY_SEPARATOR . $dir)) {
$path .= DIRECTORY_SEPARATOR . $dir;
$isUnique = false;
} else {
$iterator = new DirectoryIterator($path);
$name = strtolower($dir);
foreach($iterator as $file) {
$filename = $file->getFilename();
if($file->isDir() && strtolower($filename) == $name) {
$path .= DIRECTORY_SEPARATOR . $filename;
$isUnique = false;
break;
}
}
}
if($isUnique) {
$path .= DIRECTORY_SEPARATOR
. implode(DIRECTORY_SEPARATOR, array_slice($parts, $key));
break;
}
}
var_dump($isUnique, $path);
- 1. Comment rendre WPF insensible à la casse?
- 2. Comment rendre ma casse d'URL insensible à la casse?
- 3. Rendre Entity Framework insensible à la casse
- 4. recherche insensible à la casse en php
- 5. Comment rendre ce casse de tri insensible?
- 6. Comparaison insensible à la casse
- 7. Un moyen de rendre insensible jQuery.inArray() à la casse?
- 8. Dictionnaire insensible à la casse
- 9. Insensible à la casse Requêtes ClearQuest
- 10. Insensible à la casse GetMethod?
- 11. insensible à la casse preg_replace_callback
- 12. insensible à la casse interrupteur cas
- 13. Apache: redirection permanente insensible à la casse?
- 14. Envelopper le texte - insensible à la casse avec php
- 15. recherche LDAP insensible à la casse
- 16. insensible à la casse « soustraire » un texte d'une autre (php)
- 17. MySQL regex insensible à la casse
- 18. tableau insensible à la casse recherche
- 19. Urls insensible à la casse pour Django?
- 20. Recherche de dictionnaire insensible à la casse?
- 21. OledbDriver faisant insensible à la casse LIKE
- 22. Recherche de chaîne insensible à la casse
- 23. La regex insensible à la casse en javascript
- 24. insensible à la casse « dans » - Python
- 25. recherche insensible à la casse de MySQL?
- 26. Insensible à la casse indexOfObject pour NSArray
- 27. ArrayList & contains() - insensible à la casse
- 28. Une liste insensible à la casse
- 29. insensible à la casse dans searchlogic
- 30. Chaîne insensible à la casse C#
Il n'y a donc aucun moyen de faire 'is_dir()' pour ne pas s'en soucier? – Johan
@Johan - il y a, mais comme le souligne la note de Cletus, une telle fonction serait probablement une mauvaise idée. –