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 &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&nl=non","std.php&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ê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("&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 à la page principale de (gH)