Moteur de recherche PHP interne sans BDD
Résolu/Fermé
DDdu69
Messages postés
4
Date d'inscription
vendredi 12 juillet 2013
Statut
Membre
Dernière intervention
23 décembre 2013
-
Modifié par DDdu69 le 12/07/2013 à 08:59
DDdu69 - 15 juil. 2013 à 08:52
DDdu69 - 15 juil. 2013 à 08:52
A voir également:
- Moteur de recherche PHP interne sans BDD
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Moteur de recherche sans censure - Accueil - Services en ligne
- Installer qwant moteur de recherche - Télécharger - Navigateurs
- Easy php - Télécharger - Divers Web & Internet
4 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 juil. 2013 à 11:34
12 juil. 2013 à 11:34
Bonjour,
Pour commencer, je pense qu'il est plus pertinent de faire tes modifs dans la fonction « scanner », puisque c'est elle qui liste les fichiers qui seront, ensuite, lus.
Ton approche en créant un tableau des extensions à exclure est bonne, à mon avis.
Dans le code suivant :
Rajoute la vérification de l'extension. Le code devient :
Xavier
Pour commencer, je pense qu'il est plus pertinent de faire tes modifs dans la fonction « scanner », puisque c'est elle qui liste les fichiers qui seront, ensuite, lus.
Ton approche en créant un tableau des extensions à exclure est bonne, à mon avis.
Dans le code suivant :
if(!is_dir($file)) { $fichiers[$i] = preg_replace('#.#', '$0', $file); $i++; }
Rajoute la vérification de l'extension. Le code devient :
if(!is_dir($file)) { // On cherche l'extension $ext du fichier $temp_ext = explode('.', $file); $ext = $temp_ext[sizeof($temp_ext) - 1]; // On n'ajoute le fichier à la liste que si son extension n'est pas dans le tableau $exclurextensions if (array_search(strtolower($ext), $exclurextensions) === FALSE) { $fichiers[$i] = preg_replace('#.#', '$0', $file); $i++; } }
Xavier
DDdu69
Messages postés
4
Date d'inscription
vendredi 12 juillet 2013
Statut
Membre
Dernière intervention
23 décembre 2013
2
12 juil. 2013 à 14:21
12 juil. 2013 à 14:21
Merci ! Ca marche beaucoup mieux, maintenant je n'ai plus les extensions css ni jpg ni png, mais il me reste toujours les js.
J'ai essayé de mettre css en 1er dans l'array, et du coup je n'ai plus les js mais les css réapparaissent...
As-tu une idée ?
J'ai essayé de mettre css en 1er dans l'array, et du coup je n'ai plus les js mais les css réapparaissent...
As-tu une idée ?
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 juil. 2013 à 16:33
12 juil. 2013 à 16:33
Oui :)
Dans la ligne
if (array_search(strtolower($ext), $exclurextensions) === FALSE)
J'avais bien mis trois signes = : ===, mais tu n'en as mis que 2 :)
Explication :
array_search renvoie l'index du tableau qui contient l'extension trouvée, ou renvoie FALSE si la recherche échoue.
Donc pour le premier élément du tableau, array_search renvoie 0.
Or, php n'est pas un langage fortement typé. Pour l'égalité classique ==, 0 et false sont pareils (de même que 1 et "1", 0 et "", etc.)
Pour avoir une égalité typée, il faut utiliser le triple égal === qui vérifie non seulement que la valeur est la même, mais également le type de donnée.
Xavier
Dans la ligne
if (array_search(strtolower($ext), $exclurextensions) === FALSE)
J'avais bien mis trois signes = : ===, mais tu n'en as mis que 2 :)
Explication :
array_search renvoie l'index du tableau qui contient l'extension trouvée, ou renvoie FALSE si la recherche échoue.
Donc pour le premier élément du tableau, array_search renvoie 0.
Or, php n'est pas un langage fortement typé. Pour l'égalité classique ==, 0 et false sont pareils (de même que 1 et "1", 0 et "", etc.)
Pour avoir une égalité typée, il faut utiliser le triple égal === qui vérifie non seulement que la valeur est la même, mais également le type de donnée.
Xavier
DDdu69
Messages postés
4
Date d'inscription
vendredi 12 juillet 2013
Statut
Membre
Dernière intervention
23 décembre 2013
2
Modifié par DDdu69 le 12/07/2013 à 12:43
Modifié par DDdu69 le 12/07/2013 à 12:43
Bonjour Reivax962 et merci de ta réponse ;)
Cependant j'ai essayé avec ce code et les extensions exclues apparaissent toujours :
Y aurait-il quelque chose d'autre à modifier ou est-ce que j'ai mal copié quelque chose ?
Cependant j'ai essayé avec ce code et les extensions exclues apparaissent toujours :
function scanner($path) { if($dir = opendir($path)) { $fichiers = array(); $i = 0; while(false !== ($file = readdir($dir))) { if($file != "." && $file != "..") { if(!is_dir($file)) { // On cherche l'extension $ext du fichier $temp_ext = explode('.', $file); $ext = $temp_ext[sizeof($temp_ext) - 1]; // On n'ajoute le fichier à la liste que si son extension n'est pas dans le tableau $exclurextensions if (array_search(strtolower($ext), $exclurextensions) == FALSE) { $fichiers[$i] = preg_replace('#.#', '$0', $file); $i++; } } else { if(RechercherDansLesSousDossiers) { $sous_dossier = scanner($file); $j = 0; while($j < count($sous_dossier)) { array_unshift($fichiers, $file . '/' . preg_replace('#.#', '$0', $sous_dossier[$j])); $j++; } $i++; } } } } closedir($dir); } return $fichiers; }
Y aurait-il quelque chose d'autre à modifier ou est-ce que j'ai mal copié quelque chose ?
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 juil. 2013 à 13:53
12 juil. 2013 à 13:53
Ah, oui, au temps pour moi !
Le tableau $exclurextension n'est pas visible depuis la fonction scanner();...
Il faut donc rajouter
global $exclurextension;
au début de cette fonctions :
Xavier
Le tableau $exclurextension n'est pas visible depuis la fonction scanner();...
Il faut donc rajouter
global $exclurextension;
au début de cette fonctions :
//Ici j'essaye d'exclure les extensions non souhaitées $exclurextensions = array("js","css","jpg","png"); function scanner($path) { global $exclurextensions; if($dir = opendir($path))
Xavier