Code source du fichier affsource.php

<?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 ("&", "&amp;", $ligne);
                $ligne = str_replace ("<", "&lt;", $ligne);
                $ligne = str_replace (">", "&gt;", $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";
    }
?>