<?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";
}
?>