Page 1 sur 1

Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 10:34
par andykx
Bonjour,

Alors voilà mon problème, je souhaite afficher tous les fichiers de mon dossier "doc" qui contiennent un certain mot, que ce mot soit en minuscule mais aussi en majuscule. Je récupère mon mot par la méthode POST mais je ne trouve pas de solution pour régler mon poblème. Voici mon code qui est fonctionnel, il manque que la partie "j'affiche le fichier peut importe si le mot est en majuscule ou en minuscule".
session_start();

$case1 = $_SESSION['name'];

$dir = 'C:\\wamp64\\www\\doc\\';

foreach (glob($dir. '*' .$case1. '*') as $filename) {
    echo "Nom du fichier : <a href='/doc/" . basename($filename) . "'>"  . $filename .  "</a><br>";
}
Merci et à bientot,

Cordialement.

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 10:58
par @rthur
Bonjour,

Tu peux faire cela en utilisant la fonction preg_match()
En expression régulière, il faut ajouter la lettre i après le pattern pour indiquer "insensible à la casse"

Tu as un exemple de ce que tu veux faire dans la doc (exemple 1) :
http://php.net/manual/fr/function.preg-match.php

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 11:19
par andykx
Merci pour ta réponse.

Donc maintenant ça donne ça :
foreach (glob($dir. '*' .$case1. '*') as $filename) {

	// Le "i" après le délimiteur du pattern indique que la recherche ne sera pas sensible à la casse
	if (preg_match("/$case1/i", "basename($filename)")) {
		echo "Nom du fichier : <a href='/doc/" . basename($filename) . "'>"  . $filename .  "</a><br>";
	} else {
		echo "Aucun résultat n'a été trouvé.";
	}
}
Cependant il ne m'affiche toujours pas les fichiers en majuscule et en minuscule malgré le "i".

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 11:48
par @rthur
Relis ce que tu as mis en if() et pose toi des questions sur les guillemets

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 12:10
par andykx
Le problème c'est que cette solution ne peut pas foncionner puisque ma variable est récupérée par la métode POST et le basename de ma variable prend donc en compte que le mot que j'écrit dans mon formulaire...et je ne peux pas mettre à la fois un mot en majuscule plus un mot en miniscule dans ma cellule de recherche je ne sais pas si tu voit ce que je veut dire.

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 12:21
par @rthur
il n'y a aucune justification pour que ton basename soit entre guillemets vu que c'est une fonction PHP

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 12:43
par andykx
Dans tous les cas cette solution ne convient pas à la résolution du problème.

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 13:15
par moogli
salut,

tu n'indiques pas qu'elle est la variable qui contient l'info du formulaire.
$case1 c'est ce qu'il y a en session (d'ailleurs autant utiliser directement la variable de session).
ensuite tu peux simplement strtolower pour avoir la chose en minuscule, (sur l'entrée du formulaire et sur le répertoire) et strpos pour savoir si ce que tu veux est contenu dans le chemin.

en gros un chose comme cela
<?php
session_start();
if (!empty($_POST['le nom du champ de formulaire'])) {
    foreach (glob('C:\\wamp64\\www\\doc\\*' .$_SESSION['name']. '*') as $filename) {
        if (strpos(strtolower($filename), strtolower($_POST['le nom du champ de formulaire']))) {
            echo 'Nom du fichier : <a href="/doc/' , basename($filename) , '">'  , $filename , '</a><br>';
        }
    }
}else {
    echo 'pas de bras, pas de chocolat !';
}
@+

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 15:01
par andykx
Merci pour ton aide moogli je voit ce que tu veut dire. Et la variable qui contient l'info du formulaire c'est justement $case1 que je récupère sur mon autre fichier php grâce à la session. Sinon j'ai trouvé une autre solution je te montre mon code :
<?php
session_start();

$case1 = $_SESSION['name'];
$dir = 'C:\\wamp64\\www\\doc\\';
$min = strtolower($case1);

foreach (glob($dir. '*' .$min. '*') as $filename) {
	echo "Nom du fichier : <a href='/doc/" . basename($filename) . "'>"  . $filename .  "</a><br>";
} 
	
$maj = strtoupper($case1);

foreach (glob($dir. '*' .$maj. '*') as $filename) {
	echo "Nom du fichier : <a href='/doc/" . basename($filename) . "'>"  . $filename .  "</a><br>";
}
?>
J'ai essayer et ça fonctionne bien, après je trouve que c'est pas très "propre".

Re: Afficher les fichiers en minuscule et en majuscule

Posté : 07 févr. 2017, 15:19
par Spols
la solution de moogli devrait fonctionner avec quelque modifs propre à ton code. retire le premier niveau de if/else
<?php
session_start();
 foreach (glob('C:\\wamp64\\www\\doc\\*' .$_SESSION['name']. '*') as $filename) {
     if (strpos(strtolower($filename), strtolower($_POST['le nom du champ de formulaire']))) {
         echo 'Nom du fichier : <a href="/doc/' , basename($filename) , '">'  , $filename , '</a><br>';
     }
 }