IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

changer des noms dans une arborescence


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut changer des noms dans une arborescence
    Bonjour,
    Je bute sur ce module autonome qui ne fait pas le travail que j'en attends:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?PHP header( 'content-type: text/html; charset=utf-8' ); ?>
    <!DOCTYPE html>
    <html lang="fr"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head><body>
    <?PHP 
    ini_set ('max_execution_time', 0);
    function TraiteLui($repertoire, $nomFichier) 
     {
        $nouvNom = str_replace("é", "e",  $nomFichier);
        $nouvNom = str_replace("è", "e",  $nouvNom);
        $nouvNom = str_replace("ë", "e",  $nouvNom);
        $nouvNom = str_replace("ä", "a",  $nouvNom);
        $nouvNom = str_replace("à", "a",  $nouvNom);
       $nouvNom = str_replace("ù", "u",  $nouvNom);
        $nouvNom = str_replace("ü", "u",  $nouvNom);
        $nouvNom = str_replace("'", " ",  $nouvNom);
        $nouvNom = str_replace("  ", " ", $nouvNom);
        $nouvNom = str_replace("\,", "",  $nouvNom);
       rename($repertoire ."/". $nomFichier, $repertoire ."/". $nouvNom);
        echo $repertoire ."/". $nouvNom." xxx<br />";
     }
     function un_rep ($repertoire) 
       {
         $le_repertoire = opendir($repertoire); 
            while($fichier = @readdir($le_repertoire))
            {
                if ($fichier == "." || $fichier == "..") {continue;}
                if (is_dir($repertoire . $fichier)) { un_rep ($repertoire . $fichier."/"); } 
                  else { TraiteLui($repertoire, $fichier); }
            }
            @ closedir($le_repertoire);
        }
    un_rep ("g:/vang/");
    ?>
    </p></body></html>
    Il ne remplace pas les doubles espaces ,en répétant l'action donc
    "toto     va a"
    revient
    "toto   va a"
    Il ne remplace pas les lettres accentuées et m’affiche a l'écran des ?
    Cela doit sauter aux yeux ... mais pas aux miens mille mercis d'avance
    Dernière modification par Celira ; 20/10/2017 à 12h19.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Hello Fox

    Pour les espaces multiples, on peut utiliser preg_replace et une regex.
    Cela dit, pour un nom de fichier, je remplacerais par un tiret.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $nouvNom = preg_replace('#[ ]{1,}#', '-',  $nouvNom);
    À tester...
    Dernière modification par Invité ; 20/10/2017 à 11h00.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci l'Ami je testerait et te tiens au courant

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'avance, et stupeur, c'est la lecture des répertoires qui donne cela, testez simplement
    ce script, les accentués sont des "?"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    J'avance et découvre sans comprendre, rien que la lecture des noms de fichiers accentués
    Help les amis ...
     
    <?php 
    header('Content-type: text/html; charset=UTF-8');
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <?PHP 
     
    function un_rep ($repertoire) 
     {
      $le_repertoire = opendir($repertoire); 
      while($fichier = @readdir($le_repertoire))
       {
        if ($fichier == "." || $fichier == "..") {continue;}
        if (is_dir($repertoire . $fichier)) { un_rep ($repertoire . $fichier."/"); } 
        else { echo $repertoire . $fichier."<br />"; }
       }
      @ closedir($le_repertoire);
     }
    un_rep ("g:/vang/");
    ?>
    </body></html>

  5. #5
    Invité
    Invité(e)
    Par défaut
    Un ami me répond en privé
    j'ai testé ton code, en le modifiant comme ceci, je vois les accents (sous windows):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        else { echo iconv('cp1252','utf-8', $repertoire . "/" .$fichier."<br />"); }

    J'ai eu pas mal de problèmes avec les encodages sous windows en faisant des batchs ... Windows n'est pas en utf-8.
    Génial !!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Donc version a donner dans la FAQ ="traiter sur un USB de 2Tetra en quelques secondes le renomme sans accents de 30.000 fichiers"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?php 
    header('Content-type: text/html; charset=UTF-8');
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <?PHP 
    ini_set ('max_execution_time', 0);
    function TraiteLui($repertoire, $nomFichier) 
     {
        $nouvNom = iconv('cp1252','utf-8',$nomFichier);
        echo $repertoire . $nouvNom."<br />";
        $nouvNom = str_replace("é", "e",  $nouvNom);
        $nouvNom = str_replace("è", "e",  $nouvNom);
        $nouvNom = str_replace("ë", "e",  $nouvNom);
        $nouvNom = str_replace("ä", "a",  $nouvNom);
        $nouvNom = str_replace("à", "a",  $nouvNom);
        $nouvNom = str_replace("ù", "u",  $nouvNom);
        $nouvNom = str_replace("ü", "u",  $nouvNom);
        $nouvNom = str_replace("'", " ",  $nouvNom);
        $nouvNom = str_replace("  ", " ", $nouvNom);
        $nouvNom = str_replace("  ", " ", $nouvNom);
        $nouvNom = str_replace("  ", " ", $nouvNom);
        $nouvNom = str_replace("  ", " ", $nouvNom);
        $nouvNom = str_replace("\,", "",  $nouvNom);
        rename($repertoire . $nomFichier, $repertoire .$nouvNom);
        echo $repertoire . $nouvNom."<br />";
     }
    function un_rep ($repertoire) 
     {
      $le_repertoire = opendir($repertoire); 
      while($fichier = @readdir($le_repertoire))
       {
        if ($fichier == "." || $fichier == "..") {continue;}
        if (is_dir($repertoire . $fichier)) { un_rep ($repertoire . $fichier."/"); } 
        else { TraiteLui($repertoire, $fichier); }
       }
      @ closedir($le_repertoire);
     }
    un_rep ("g:/vang/");
    ?>
    </body></html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/12/2008, 12h23
  2. [batch file] detruire des fichiers dans une arborescence
    Par Biosox dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 03/06/2008, 10h10
  3. Changer des ROWID dans une table ?
    Par sofien dans le forum SQL
    Réponses: 11
    Dernier message: 23/11/2007, 14h50
  4. changer des nombres dans une chaine
    Par newbiegeek dans le forum ASP
    Réponses: 11
    Dernier message: 09/08/2007, 15h24
  5. [Debutant] changer des images dans une div par une fonction javascript
    Par raul_le_vieux dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2007, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo