Il m’est arrivé à plusieurs reprises de devoir rechercher à plusieurs reprises un caractère BOM (marque d’ordre des octets : cf: wikipedia) au sein de sites web basés sur des logiciels libres tels que Joomla, WordPress..
La recherche de ce caractère dans l’ensemble des fichiers est bien entendu fastidieuse.
C’est pourquoi j’ai crée ce script qui recherche la présence de ces caractères au sein de tous les fichiers « .php », « .html » et « .ini » contenus dans la WEB_ROOT.
$extensions_allowed = array();
$extensions_allowed [] = 'php';
$extensions_allowed [] = 'html';
$extensions_allowed [] = 'ini';
function listeFichiers($dir){
global $extensions_allowed;
if ($handle = opendir($dir)) {
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
if (($file <>'.') && ($file<>'..')) {
if (is_file($dir.'/'.$file)){
$extension = pathinfo($dir.'/'.$file, PATHINFO_EXTENSION);
if (in_array($extension,$extensions_allowed)){
$fileHandle = fopen($dir.'/'.$file, "r");
$intro = fread($fileHandle, 3);
fclose($fileHandle);
if ($intro == "\xEF\xBB\xBF"){
echo "$dir/$file\n";
flush();
}
}
} else {
if (is_dir($dir.'/'.$file)){
listeFichiers($dir.'/'.$file);
}
}
}
}
closedir($handle);
}
}
header("Content-type: text/plain\n\n");
set_time_limit(3600);
$path = $_SERVER['DOCUMENT_ROOT'];
if (substr($path,-1)=='/'){
$path = substr($path,0,-1);
}
listeFichiers($path);
?>
$extensions_allowed [] = 'php';
$extensions_allowed [] = 'html';
$extensions_allowed [] = 'ini';
function listeFichiers($dir){
global $extensions_allowed;
if ($handle = opendir($dir)) {
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
if (($file <>'.') && ($file<>'..')) {
if (is_file($dir.'/'.$file)){
$extension = pathinfo($dir.'/'.$file, PATHINFO_EXTENSION);
if (in_array($extension,$extensions_allowed)){
$fileHandle = fopen($dir.'/'.$file, "r");
$intro = fread($fileHandle, 3);
fclose($fileHandle);
if ($intro == "\xEF\xBB\xBF"){
echo "$dir/$file\n";
flush();
}
}
} else {
if (is_dir($dir.'/'.$file)){
listeFichiers($dir.'/'.$file);
}
}
}
}
closedir($handle);
}
}
header("Content-type: text/plain\n\n");
set_time_limit(3600);
$path = $_SERVER['DOCUMENT_ROOT'];
if (substr($path,-1)=='/'){
$path = substr($path,0,-1);
}
listeFichiers($path);
?>


Merci pour ce code très intéressent.
Enorme ce code !!
Depuis le temps que ce BOM me soulait !!!
MERCI !
Tu fais partie de mes flux RSS maintenant !
Bonjour
j’ai créer un fichier recherche_utf8_boom.php
avec le code ci dessus.
j’ai juste rajouter menu
-> format
-> convertir en utf8 (sans boom)
-> menu
-> format
-> convertir en format Unix
( histoire que mes fichiers php soit éditables facilement sur Linux )
si j’enregistre le fichier
quand je l’ouvre a nouveau
je constate que dans la barre des status ( en bas de page )
il est écris : UNIX ANSI
et dans le menu du haut, on peut lire que le fichier est en UNIX et encoder en ansi
je n’arrive pas a l’encoder en UNIX UTF-8 ( sans BOOM )
connaissez vous une manière plus simple, plus rapide?
merci d’avance.
Bonjour
j’ai créer un fichier recherche_utf8_boom.php
avec le code ci dessus.
j’ai juste rajouter <?php au debut du fichier php.
quand je l’ai lancé
j’ai reçus une liste de fichiers php se trouvant sur mon site web
je présume que ces fichiers sont mal encodé
comment puis je résoudre ce problème ?
j’utilise notepad++ v5.5.1
-> menu
-> format
-> convertir en utf8 (sans boom)
-> menu
-> format
-> convertir en format Unix
( histoire que mes fichiers php soit éditables facilement sur Linux )
si j’enregistre le fichier
quand je l’ouvre a nouveau
je constate que dans la barre des status ( en bas de page )
il est écris : UNIX ANSI
et dans le menu du haut, on peut lire que le fichier est en UNIX et encoder en ansi
je n’arrive pas a l’encoder en UNIX UTF-8 ( sans BOOM )
connaissez vous une manière plus simple, plus rapide?
merci d’avance.
Bonjour
dans mon message précédent, le site web http://libre-d-esprit.thinking-days.ne a tronqué mon message
donc je réessaye de le publier complètement
j’ai créer un fichier recherche_utf8_boom.php
avec le code ci dessus.
j’ai juste rajouter <?php au début du fichier php.
quand je l’ai lancé
j’ai reçus une liste de fichiers php se trouvant sur mon site web
je présume que ces fichiers sont mal encodé
comment puis je résoudre ce problème ?
j’utilise notepad++ v5.5.1
-> menu
-> format
-> convertir en utf8 (sans boom)
-> menu
-> format
-> convertir en format Unix
( histoire que mes fichiers php soit éditables facilement sur Linux )
si j’enregistre le fichier
quand je l’ouvre a nouveau
je constate que dans la barre des status ( en bas de page )
il est écris : UNIX ANSI
et dans le menu du haut, on peut lire que le fichier est en UNIX et encoder en ansi
je n’arrive pas a l’encoder en UNIX UTF-8 ( sans BOOM )
connaissez vous une manière plus simple, plus rapide?
merci d’avance.