[PHP] Lire un répertoire UTF-8

Lire un répertoire UTF-8 [PHP] - PHP - Programmation

Marsh Posté le 13-08-2007 à 19:03:41    

Hello,
 
Je cherche à lire sur mon site en PHP un répertoire de la façon suivante :
 

Code :
  1. if ($repetoire = opendir($rep_image . $chemin))
  2. {
  3.        while($fichier = readdir($repetoire))
  4.        {
  5.              (etc...)
  6.        }
  7. }


 
Cela fonctionne pour le réperoire racine, mais certains répertoires ont des caractères accentués, et mon site étant en UTF-8, je ne parviens pas à lire ces répertoires. J'ai tenté d'encoder l'url passée à opendir() via la fonction utf8_encode(), mais ça n'a rien donné :(
 
Qqun aurait-il une idée ?
 
Merci !
Jey.


---------------
L'univers de Starwars est désormais à votre portée !
Reply

Marsh Posté le 13-08-2007 à 19:03:41   

Reply

Marsh Posté le 14-08-2007 à 10:36:57    

Je uppe car intéressé aussi.

Reply

Marsh Posté le 14-08-2007 à 10:38:10    

J'ai déja eu ce probleme... J'ai pas trouvé de solution a part renommé les répertoires

Reply

Marsh Posté le 14-08-2007 à 10:40:55    

Pareil mais j'ai très honte...

Reply

Marsh Posté le 14-08-2007 à 10:46:47    

disons qu'en ce qui me concerne j'ai pris l'habitude de ne jamais mettre des caratères spéciaux dans les noms de fichier ou répertoire

Reply

Marsh Posté le 14-08-2007 à 18:53:34    

Argh ^^
Le souci étant que c'est une sortie de galerie multimédia, contenant des dizaines et des dizaines de répertoire, qui sont eux-mêmes appellés sur pas mal de pages...Donc c'est chaud de rechanger les noms :D

Reply

Marsh Posté le 14-08-2007 à 23:29:03    

Je pense que tu dois modifier l'encodage interne de PHP :
http://fr.php.net/mb_internal_encoding


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 15-08-2007 à 12:27:14    

Merci !
J'ai réussi en utilisant plusieurs choses :
 

Code :
  1. mb_internal_encoding("UTF-8" );


 

Code :
  1. utf8_decode / utf8_encode


 
et une fonction maison :
 

Code :
  1. $chemin_new = str_replace("é", "%E9", $chemin);
  2. $chemin_new = str_replace("é", "%E9", $chemin_new);
  3. $chemin_new = str_replace("è", "%E8", $chemin_new);
  4. $chemin_new = str_replace("ù", "%F9", $chemin_new);
  5. $chemin_new = str_replace("ô", "%F4", $chemin_new);
  6. $chemin_new = str_replace("î", "%EE", $chemin_new);


 
C'est assez moche comme code mais au moins ça fonctionne ^^

Reply

Marsh Posté le 16-08-2007 à 21:01:15    

Je te conseille d'utiliser des tableaux de caractères plutot que de simples caractères avec str_replace.
1) C'est beaucoup plus rapide.
2) C'est plus court : tu n'auras qu'un seul appel à str_replace.


Message édité par CyberDenix le 16-08-2007 à 21:02:27

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 16-08-2007 à 23:14:12    

étant néophythe en PHP (je viens du monde ASP), omment cela se code t'il en PHP ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed