Peut de PHP glob() être faits pour trouver des fichiers dans un cas de manière insensible?
Je veux tous les fichiers CSV dans un répertoire, j'ai donc utiliser
glob('my/dir/*.CSV')
Cela ne trouverez pas de fichiers avec une minuscule extension CSV.
Je pourrait utilisation
glob('my/dir/*.{CSV,csv}', GLOB_BRACE);
Mais est-il un moyen pour permettre à tous les cas mixtes versions? Ou est-ce juste une limitation de glob()
?
- Juste une remarque qui
glob()
est en fait sensible à la casse sous Windows (et éventuellement d'autres systèmes de fichiers insensibles). - Ce n'est pas vrai.
glob("*.CSV")
trouverez uniquement des majuscules de fichiers, tandis queglob("*.csv")
trouverez uniquement des minuscules fichiers. --- testé dans windows7 avec php 5.3.8
Vous devez vous connecter pour publier un commentaire.
Glob modèles supportent les plages de caractères:
Que vous pourriez faire ce
glob
?glob('my/dir/*.[cC][sS][vV]')
devrait le faire. Ouais c'est un peu laid.Vous pouvez également filtrer les fichiers après avoir sélectionné tous
performance sage est peut-être pas la meilleure option si par exemple, vous avez 1 million de fichiers qui ne sont pas csv dans le dossier.
Vous pouvez écrire votre propre casse glob. C'est à partir d'un site web personnel de la bibliothèque j'écris:
J'ai entendu parler d'une fonction qui peut être utilisée comme ceci:
Essayez si cela fonctionne pour vous!
Est venu ce lien pour glob avec plusieurs fichiers. Bien que cela n'aide pas avec l'OP, il peut aider d'autres personnes qui se retrouvent ici.
$i
comme'0'
? Pourquoi?Ce code fonctionne pour moi d'obtenir uniquement des images et insensible à la casse.
imgage liste:
Peut-être il semble laid mais vous n'avez qu'à déclarer l' $imageOnly une fois et vous pouvez l'utiliser en cas de besoin. Vous pouvez également déclarer $jpgOnly etc.
J'ai même fait une fonction pour créer ce modèle.
Pour le faire fonctionner avec toutes les extensions utilisation:
'
, et (2) le PCREe
(eval) indicateur est obsolète depuis PHP 5.5 et supprimés dans 7, qui sont tous deux âgés de plus de cette réponse. Son utilisation est déconseillée.preg_replace()
est utilisé inutilement. Vous pourriezexplode()
,map()
, renvoyer l'affaire variantes et puisjoin()
.