<?php // affiche le code source d'un programme ou d'une page HTML function affsource ($fichier) { // longueur maximale des lignes du fichier $lgmax = 200; // mémorise si on est dans un commentaire sur plusieurs lignes $comgen = 0; // ouvrir le fichier en lecture $descfic = fopen ($fichier, "r"); // si l'ouverture s'est bien passée if ($descfic > 0) { // lire la première ligne $ligne = fgets ($descfic, $lgmax); // tant que non fin de fichier while ($ligne) { // remplacer certains caractères par leur code HTML $ligne = str_replace ("&", "&", $ligne); $ligne = str_replace ("<", "<", $ligne); $ligne = str_replace (">", ">", $ligne); // si début d'un commentaire sur plusieurs lignes if (strpos (" ".$ligne, "/*") > 0) { // tout le commentaire sera affiché en vert $ligne = str_replace ("/*" , '<font color="#008000">/*', $ligne); // on mémorise le fait qu'on est dans un commentaire $comgen = 1; } // sinon si commentaire jusqu'en fin de ligne else if ((strpos (" ".$ligne, "//") > 0) && $comgen == 0) // ce commentaire sera affiché en bleu $ligne = str_replace ("//" , '<font color="#0040FF">//', rtrim ($ligne))."</font>\n"; // si fin d'un commentaire sur plusieurs lignes if (strpos (" ".$ligne, "*/") > 0) { // terminer l'affichage en vert $ligne = str_replace ("*/" , "*/</font>", $ligne); // on mémorise le fait qu'on n'est plus dans un commentaire $comgen = 0; } // afficher la ligne lue et éventuellement transformée echo $ligne; // lire la ligne suivante $ligne = fgets ($descfic, $lgmax); } // terminé avec le fichier fclose ($descfic); } // sinon else if ($fichier) // message d'erreur echo "Fichier ".$fichier." inaccessible ou inexistant\n"; } ?>