Comment modifier l'extension de plusieurs fichier automatiquement?

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
L'objectif de ce tutoriel est de voir comment modifier l'extension de plusieurs fichiers en une seule fois pour éviter de tout faire à la main. Imaginez un instant un site statique en HTML (.html) dont les 150 pages qui le constitue doivent basculer en PHP (.php) ...clic droit » renommer, clic droit » renommer, clic droit » renommer ... elle est ou la corde :) ! C'est long, ennuyeux autant dire très chiant ... alors prenons 5 minutes pour écrire un code d'automatisation et profitons pleinement des 1h30mn que ça aurait dut nous prendre pour faire autre chose.
 
Pour ce faire, nous allons utiliser PHP et Wampserver pour disposer d'un environnement Apache.
 
Sous WampServer je créé un dossier nommé "listing-fichier" (C:\wamp\www\listing-fichier). Dans ce dossier j'y place un fichier nommé "index.php" et un dossier nommé "fichiers". Le dossier "fichiers" contient tout les fichiers dont je veux modifier l'extension (extension commune à tout les fichiers, ne mélangez pas du .html avec du .php par exemple).
 
J'ouvre ensuite le fichier "index.php" et je commence à coder.
 
Ou se trouve mon dossier "fichiers" par apport au fichier "index.php" :
<?php
//nom du dossier à scanner
$nom_du_dossier = './fichiers/';
On ouvre le dossier :
//ouverture du dossier
$ouverture = opendir($nom_du_dossier);
On lit ce que contient le dossier et pour ça il faut boucler sur les éléments trouvés :
//lecture et boucle du dossier
while($fichier = readdir($ouverture)) {
On fait quelques vérifications de base :
    //is_dir()Indique si le fichier est un dossier
    if($fichier != '.' && $fichier != '..' && !is_dir($nom_du_dossier.$fichier))
    {
$fichier contient la liste de tout les fichiers trouvés. Pour modifier l’extension des fichiers, il faut d abords les trouver et pour ce faire on utilise la fonction explode() en prenant comme point de repère le point contenu dans le nom des fichiers :
        //on explore chaque nom de fichier pour trouver le point
        $tableau = explode(".", $fichier);
Si on effectue un print_r() de $tableau comme ci-dessous :
        echo '<pre>';
        print_r($tableau);
        echo '</pre>';
On obtient un tableau pour chaque fichier de la forme suivante :
Array
(
    [0] => index
    [1] => php
)
On sait maintenant que :
  • $tableau[0] correspond au nom du fichier.
  • $tableau[1] correspond à l'extension du fichier.
 
Reste plus qu'à remplacer la variable $tableau[1] par l'extension souhaité en utilisant la fonction rename() :
        rename($nom_du_dossier.$fichier , $nom_du_dossier.$tableau[0].'.php');
Dans cet exemple, l'extension des fichiers sont changés en .php.
 
Pour finir, on ferme les boucles ainsi que l'accès au répertoire :
    } 
}
closedir($ouverture);
?>
Le code dans son ensemble :
<?php
//nom du dossier à scanner
$nom_du_dossier = './fichiers/';
//ouverture du dossier
$ouverture = opendir($nom_du_dossier);
//lecture et boucle du dossier
while($fichier = readdir($ouverture)) {
    //is_dir()Indique si le fichier est un dossier
    if($fichier != '.' && $fichier != '..' && !is_dir($nom_du_dossier.$fichier))
    {
        //on explore chaque nom de fichier pour trouver le point
        $tableau = explode(".", $fichier);
        //on renomme chaque fichier en changeant l'extension
        rename($nom_du_dossier.$fichier , $nom_du_dossier.$tableau[0].'.php');
    } 
}
closedir($ouverture);
?>
 
Voir/déposer un commentaire (0) | Signaler un problème