Valid XHTML     Valid CSS2    

Listing du fichier montresource.php avec syntaxhighlighter


        <?php
        #    (gH)   -_-  montresource.php  ;  TimeStamp (unix) : 05 Février 2011 vers 17:47
        
        error_reporting(E_ALL | E_NOTICE ) ;
        
        include("std.php") ;
        
        ############################################################ 1
        #
        #  pour des raisons de sécurité, il ne faut pas mettre
        #  ce programme à la racine de votre site ou dans un
        #  répertoire qui permettrait de voir des fichiers "sensibles"
        #  (avec mot de passe, option de configuration...)
        #
        ############################################################ 2
        
        $gh      = "http://forge.info.univ-angers.fr/~gh/js/syntaxhighlighter" ;
        $ghforge = "http://forge.info.univ-angers.fr/~gh/" ;
        
        $lesCss = "$gh/styles/shCore.css $gh/styles/shThemeDefault.css" ;
        $lesCss = "$gh/styles/shCore.css $gh/styles/shThemeDefault.css" ;
        $lesJs   = "" ;
        $lesJs  .= "$gh/src/shCore.js " ;
        $lesJs  .= "$gh/scripts/shBrushPerl.js " ;
        $lesJs  .= "$gh/scripts/shBrushPhp.js " ;
        $lesJs  .= "$gh/scripts/shBrushJScript.js " ;
        $lesJs  .= "$gh/scripts/shBrushXml.js " ;
        $lesJs  .= "$gh/scripts/shBrushR.js " ;
        
        debutPage("Code-source ","strict",$lesCss,$lesJs) ;
        debutSection("100%") ;
        
        $aide = "oui" ;
        $txtaide = "Pour ne pas avoir les numéros de ligne, ajouter &amp;nl=non à l'URL." ;
        $txtaide = "" ;
        
        # sans paramètre, on affiche l'aide
        
        if (isset($_GET["nomfic"]))  {
           $fn   = $_GET["nomfic"] ;
           $aide = "non" ;
        } ; # finsi
        
        # affichage éventuel de l'aide
        
        if ($aide=="oui") {
        
          h2("Syntaxe : montresource.php?nomfic=".s_span("nom du fichier","gbleuf")) ;
          pvide() ;
          h3("Exemples :") ;
          blockquote() ;
          p() ;
          echo "- avec numéros de ligne : " ;
          echo href("montresource.php?nomfic=std.php","std.php") ;
          nbsp(5) ;
          echo href("montresource.php?nomfic=std.css","std.css") ;
          finp() ;
          p() ;
          echo "- sans numéros de ligne : " ;
          echo href("montresource.php?nomfic=std.php&amp;nl=non","std.php&amp;nl=non") ;
          finp() ;
          finblockquote() ;
        
          finSection() ;
          finPage() ;
          return ;
        
        } ; # fin si
        
        # il faut vérifier qu'on ne remonte pas avec le nom du fichier
        
        $li = 1 ;
        $nl = "" ;
        if (isset($_GET["nl"])) { $nl = $_GET["nl"] ; } ;
        if ($nl=="non") { $li = 0 ; } ;
        
        $strp = strpos("  $fn","..") ;
        $strc = strpos("  $fn","./") ;
        $strr = strpos("  $fn","/") ;
        $strh = strpos("  $fn","http") ;
        
        if (($strp) or ($strh) or ($strc) or ($strr) ) {
        
            echo "Non ! La remontée avec .. ou http://... ou / est interdite." ;
            finSection() ;
            finPage() ;
            return ;
        
        }  ; # fin si
        
        # puis il faut vérifier que le fichier existe
        
        if (!file_exists($fn)) {
            h1("Fichier ".b("$fn")." introuvable.") ;
            finSection() ;
            finPage() ;
            return ;
        } ; # fin si
        
        # arrivé ici, on peut afficher...
        
        $typeFic = substr($fn,strrpos($fn,".")) ;
        #h2(" extension : $typeFic") ;
        
        switch($typeFic) {
        
        case ".pl" :
        
           pre_fichier($fn,"brush:perl",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".r" :
        
           pre_fichier($fn,"brush:r",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".css" :
        
           pre_fichier($fn,"brush:css",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".js" :
        
           pre_fichier($fn,"brush:js",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".xml" :
        
           pre_fichier($fn,"brush:xml",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".html" :
        
           pre_fichier($fn,"brush:xml",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".htm" :
        
           pre_fichier($fn,"brush:xml",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        case ".svg" :
        
           pre_fichier($fn,"brush:xml",3) ;
           js("SyntaxHighlighter.all()") ;
           break ;
        
        default:
        
           h1("Listing du fichier $fn ") ;
           pvide() ;
        
           sdl() ;
           cmt($txtaide) ;
           sdl() ;
        
           echo "\n<!-- listing de $fn mode numéro de ligne = $li -->\n\n" ;
           div() ;
        
           echo showSourcePhpGh($fn,$typeFic,$li) ;
        
           findiv() ;
           echo "<!-- fin du listing de $fn -->\n\n" ;
        
        } ; # fin de switch
        
        # pour php, on peut proposer plusieurs colorations syntaxiques
        
        if ($typeFic==".php") {
          if ((file_exists("voirsourcephp2.php")) and (file_exists("voirsourcephp1.php")) ){
        
                p("texte") ;
                echo "La coloration syntaxique est réalisée par un ".b("enrobage")." de la function php nommée " ;
                echo href("http://www.manuelphp.com/php/function.highlight-file.php","highlight_file") ;
                finp() ;
        
                p("texte") ;
                echo " mais si vous préférez, vous pouvez utiliser celle de ";
                echo href("voirsourcephp2.php?nomfic=$fn","SyntaxHighlighter") ;
                echo " ou m&ecirc;me celle de " ;
                echo href("voirsourcephp1.php?nomfic=$fn","geshi")."." ;
                finp() ;
        
        
          } ; # fin si
          p("texte") ;
             echo " Pour ne pas voir les numéros de ligne, ajoutez ".b("&amp;nl=non")." à la suite du nom du fichier. " ;
          finp() ;
        } ; # fin si
        
        ############################################################
        
        function showSourcePhp($chemin) {
        
        ############################################################
        
          if (file_exists($chemin)) {
            $str = highlight_file($chemin, TRUE);
          } else {
            return "Fichier ".b("$chemin")." introuvable." ;
          } ; # fin si
        
           pre_fichier($chemin,"brush:php",3) ;
           js("SyntaxHighlighter.all()") ;
        
        } # fin de fonction  showSourcePhp
        
        
        ############################################################
        
        function showSourcePhpGh($chemin,$typeFic="txt",$nbLigne = 1) {
        
        ############################################################
        
        
          if (file_exists($chemin)) {
            $str = highlight_file($chemin, TRUE);
          } else {
            return "Fichier ".b("$chemin")." introuvable." ;
          } ; # fin si
        
          // Nettoyage du code
        
           $str = str_replace("<code>", '', $str)  ;
           $str = str_replace("</code>", '', $str) ;
        
           $str = preg_replace('/<span style="(.*)">(.*)<(.*)<\/span>/Um','<span style="\1">\2</span><\3',$str);
        
           // Explode sur le <br />
        
           $arr      = explode('<br />', $str);
           $numLigne = 0 ;
           $nbe      = count($arr) ;
           $out = "" ;
           foreach ($arr as $ligne){
             $ligne = str_replace("\n", '', $ligne);
             $numLigne++ ;
             if ($numLigne<$nbe) {
                  if ($nbLigne==1) {
                     $out .= '<span style="color:#000000">'.sprintf("%05d ",$numLigne)."</span>".snbsp(4) ;
                  } ; # fin si
                  $out .= $ligne."     <br />\n";
             } else {
                  $out .=  "</span>\n" ;
             } ; # fin si on n'est pas à la dernière ligne
           } ; # fin pour chaque
           $out = "<code>\n".$out."</code>\n";
           return $out;
        
        } # fin de fonction showSourcePhpGh
        
        ############################################################
        
        function showSourcePerl($chemin) {
        
        ############################################################
        
          if (file_exists($chemin)) {
            $str = highlight_file($chemin, TRUE);
          } else {
            return "Fichier ".b("$chemin")." introuvable." ;
          } ; # fin si
        
           pre_fichier($chemin,"brush:perl",3) ;
           js('SyntaxHighlighter.all()') ;
        
        } ; # fin de fonction  showSourcePerl
        
        finSection() ;
        finPage() ;
        ?>
        

La coloration syntaxique est réalisée par : SyntaxHighlighter.

Si vous préférez, vous pouvez utiliser celle de geshi ou même celle construite autour de la fonction highlight_file.

 

 

retour gH    Retour à la page principale de   (gH)