[RESOLU] encodage et parcours de dossier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] encodage et parcours de dossier

Re: encodage et parcours de dossier

par schim59 » 06 janv. 2013, 21:25

De plus les dossiers répondent false quand je les teste avec is_dir().

Autre exmple ce code :
<?php
$dir='bao/';
 
$var=scandir($dir);
 
foreach($var as $elem)
{
echo "->",$elem,"<br>";
if(is_dir($elem)==true){
	$var2=scandir($elem);
	var_dump($var2);
}
	
}
?>
https://gist.github.com/4469138

donne çà :
http://www.pm3.fr/page.php*

Alors que qu'ils devrait tous etre developper comme le ->.

Je ne comprend pas.
Ceux sont tous des dossiers les NFA et MVA, pour info

Re: encodage et parcours de dossier

par moogli » 06 janv. 2013, 20:43

les "c'est pas un dossier" c'est des fichiers ?


tu as oublié un else dans ton affaire :)
<?php
 for($i=2;$i<$j;$i++){
                $new_dir=$dir.$var[$i];
                        if(is_dir($new_dir)){
                                echo "-D-<br>";
                                parcour($new_dir);
                        }
                        elseif(is_file($new_dir)){
                                echo "-F-<br>";
                                parcour($new_dir);
                        }
                        else{
                              echo "$new_dir n'est pas 1 dossier<br>"; 
                       }
        }
car ton entrée est un dossier ou un fichier ou autre chose ;)

@+

Re: encodage et parcours de dossier

par schim59 » 06 janv. 2013, 19:21

Quelque soit la méthode le problème c'est que les dossier ne sont pas recoonnu comme des dossier et retourne FALSE quand je les teste avec is_dir().

Mon code :
$dir='bao/';

function parcour($dir){
$var=scandir($dir);
echo $dir,"<br>";

$j=count($var);

echo $j,"<BR>";
$i=0;


	for($i=2;$i<$j;$i++){

		$new_dir=$dir.$var[$i];
			if(is_dir($new_dir)){
				echo "-D-<br>";
				parcour($new_dir);
			}
			if(is_file($new_dir)){
				echo "-F-<br>";
				parcour($new_dir);
			}
			else{echo "$new_dir n'est pas 1 dossier<br>"; }
	}

}

parcour($dir);
?>
Et il me retourne que certain dossier n'en sont pas :)

il m'affiche ça :

http://www.pm3.fr/page.php

bao/
7
-D-
bao/courscnam
17
bao/courscnamMVA003-Outils mathematiques (combinatoire, probabilites) n'est pas 1 dossier
bao/courscnamMVA004-Mathematiques (automates, codes ...) n'est pas 1 dossier
bao/courscnamNFA001-Algorithmique et programmation avec Java (notions de base) n'est pas 1 dossier
bao/courscnamNFA002-Algorithmique programmation avec Java (concepts objet) n'est pas 1 dossier
bao/courscnamNFA003-Principes et fonctionnement des systemes d'exploitation n'est pas 1 dossier
bao/courscnamNFA005-Algorithmique et programmation avec Java (travaux pratiques) n'est pas 1 dossier
bao/courscnamNFA006-Structures de données n'est pas 1 dossier
bao/courscnamNFA007-Méthodes pour l'informatisation n'est pas 1 dossier
bao/courscnamNFA008-Bases de données n'est pas 1 dossier
bao/courscnamNFA009-Principes des réseaux informatiques n'est pas 1 dossier
bao/courscnamNFA010-Graphes et optimisation n'est pas 1 dossier
bao/courscnamNFA016-Architecture web et developpement cote client n'est pas 1 dossier
bao/courscnamNFA017- Dev sites dynamiques et developpement cote serveur n'est pas 1 dossier
bao/courscnamNFA018-Gestion de projet informatique n'est pas 1 dossier
bao/courscnamNFA021-Projet WEB n'est pas 1 dossier
bao/courscnam n'est pas 1 dossier
-F-
bao/courscnam.php
1
-F-
bao/listingcours.php
1
-F-
bao/listingcours_ssdossier.php
1
-F-
bao/traitement_list.php
1

Re: encodage et parcours de dossier

par schim59 » 06 janv. 2013, 18:14

la classe directoryIterator n'a pas encore était envisagé mais figure dans mon cours. Je vais m'y coller.

Merci pour le conseil de normalisation des noms de dossier. Mais j'aime pas devoir faire ça sur 20 dossiers :) Ou alors avec un script, faudra tester.

Encore merci. Je teste ca apres.

Re: encodage et parcours de dossier

par moogli » 06 janv. 2013, 15:12

salut,


php n’est pas trop prévu pour l'utf-8 à la base, donc si ton système de fichiers contient des caractères "spéciaux" tu risque d'être emmerdé (qui l'OS soit en ISO ou en utf-8).

as tu essayé d'autre solution, comme la classe directoryIterator ?

ou le opendir + while (enfin équivalent scandir indiqué dans la doc) ?

si tu as la main sur l'arborescence système fait en sorte que cela ne puisse pas arriver ;) (suppression des caractères spéciaux à la création des répertoires, script de normalisation etc ;) ).


@+

Re: encodage et parcours de dossier

par schim59 » 06 janv. 2013, 02:24

Bonjour,

Tout fonctionne pour le mieux, le script PHP (code ici) liste et ouvre les dossiers.
Tout ? non !

Une poignée d"irréductibles dossiers contenant des accents refuse de s'ouvrir sous le prétexte suivant:

Warning: scandir(courscnam/NFA007-Méthodes/) [function.scandir]: failed to open dir: No such file or directory in D:\wamp\www\predev\bao\listingcours_ssdossier.php on line 7

D'avance merci.

Re: encodage et parcours de dossier

par schim59 » 05 janv. 2013, 19:17

echo utf8_encode($var['8']);
m'a sauvé.

Bon week end.

encodage et parcours de dossier

par schim59 » 05 janv. 2013, 19:15

Bonjour,

le code :
	scandir($dir);
Me renvoi des noms de fichier avec un encodage qui ne me convient pas quelle fonction puis je utiliser ?
L'encodage est il différent selon les OS ?

D'avance merci.

Et bonne année :)