UTF8izer : pour convertir en UTF-8 tous les fichiers ISO d'un dossier
Posté : 01 nov. 2008, 15:40
Bonjour,
Pour la migration d'un site d'ISO-8859-1 vers UTF-8,
j'ai eu besoin de convertir tous les fichiers HTML et PHP.
Pour cela, il faut :
- changer le jeu de caractères utilisés et l'encodage de chaque fichier
- remplacer les entités HTML ("é") par leurs caractères correspondants ("é")
Voici le script qui fait tout ça...
N'oubliez pas de créer deux sous-dossiers /iso et /utf8
(paramétrables au début du script : lignes 3 et 4).
- le dossier /iso contient bien entendu les fichiers originaux
- le dossier /utf8 accueillera les copies de ces fichiers converties en UTF-8
J'ai choisi de procéder ainsi plutôt que par réécriture/écrasement par souci de sécurité.
Par défaut, j'ai choisi de ne traiter que les fichiers d'extensions .php et .htm.
N'oubliez pas de modifier ce choix si nécessaire (ligne 10)
Merci à Calimero pour son coup de main au débuggage.
Pour la migration d'un site d'ISO-8859-1 vers UTF-8,
j'ai eu besoin de convertir tous les fichiers HTML et PHP.
Pour cela, il faut :
- changer le jeu de caractères utilisés et l'encodage de chaque fichier
- remplacer les entités HTML ("é") par leurs caractères correspondants ("é")
Voici le script qui fait tout ça...
(paramétrables au début du script : lignes 3 et 4).
- le dossier /iso contient bien entendu les fichiers originaux
- le dossier /utf8 accueillera les copies de ces fichiers converties en UTF-8
J'ai choisi de procéder ainsi plutôt que par réécriture/écrasement par souci de sécurité.
N'oubliez pas de modifier ce choix si nécessaire (ligne 10)
Merci à Calimero pour son coup de main au débuggage.
<table summary="UTF8_izer">
<?php
$dossier_iso = 'iso';
$dossier_utf8 = 'utf8';
$handle = opendir($dossier_iso);
while ($file = readdir($handle))
{ if (is_file($dossier_iso.'/'.$file))
{ $extension = substr($dossier_iso.'/'.$file, -3, 3);
if ($extension=='php' || $extension=='htm')
{ echo '<tr><td>'.$file.'</td>'."\n";
$contenu = file_get_contents($dossier_iso.'/'.$file);
if ($contenu)
{ $contenu_new = $contenu;
$contenu_new = utf8_encode($contenu_new);
$contenu_new = html_entity_decode($contenu_new,ENT_NOQUOTES,'UTF-8');
$conversion = file_put_contents($dossier_utf8.'/'.$file,$contenu_new);
echo '<td>'.($conversion ? 'OK' : '-----').'</td></tr>'."\n";
}
else
{ echo '<td>Conversion non effectuée</td></tr>'."\n";
}
}
}
}
closedir($handle);
?>
</table>