Réponse acceptée !
Salut,
"
".$entree."";
Est-ce que tu as essayé avec du code HTML correctement écrit ?
'
'.$entree.'';
Les attributs des balises sont censés être entre guillemets doubles, et pas simples. Il n'y a normalement pas d'espace autour du = qui assigne une valeur à un attribut.
Ca, c'est pas correct :

Ca, ça l'est :

C'est certes du XHTML 1.x, mais c'est compatible avec HTML 4
Sinon, quelques petites remarques, au passage :
ereg("\.([^\.]*$)", $entree, $elts);
=>
preg_match('`^(?:[^\.]).*\.([^\.]+)$`, $entree, $elts);
Une PCRE est TOUJOURS plus rapide qu'une regex standard, à motif équivalent. Par ailleurs, le motif que je te donne là permet d'éliminer les fichiers cachés, le tient obtient htaccess pour un fichier .htaccess, ce qui n'est pas correct.
$icone = $ext .'.'.'ico';
=>
$icone = $ext . '.ico';
Pourquoi concaténer deux chaines entre quotes ?
Si tu es sur PHP5, j'en profite pour attirer ton attention sur ma dernière source qui à défaut d'être ultra performante, a au moins le mérite de permettre ce que tu veux faire en beaucoup plus lisible et une syntaxe PHP5 (elle t'économiserait sûrement pas mal de lignes de code...)