Valid XHTML     Valid CSS2    

Listing du fichier montresource.php

 

00001     <?php
00002     #    (gH)   -_-  montresource.php  ;  TimeStamp (unix) : 05 Février 2011 vers 17:47
00003     
00004     error_reporting
(E_ALL E_NOTICE ) ;
00005     
00006     include("std.php"
) ;
00007     
00008     ############################################################ 1
00009     #
00010     #  pour des raisons de sécurité, il ne faut pas mettre
00011     #  ce programme à la racine de votre site ou dans un
00012     #  répertoire qui permettrait de voir des fichiers "sensibles"
00013     #  (avec mot de passe, option de configuration...)
00014     #
00015     ############################################################ 2
00016     
00017     $gh      
"http://forge.info.univ-angers.fr/~gh/js/syntaxhighlighter" ;
00018     $ghforge 
"http://forge.info.univ-angers.fr/~gh/" ;
00019     
00020     $lesCss 
"$gh/styles/shCore.css $gh/styles/shThemeDefault.css" ;
00021     $lesCss 
"$gh/styles/shCore.css $gh/styles/shThemeDefault.css" ;
00022     $lesJs   
"" ;
00023     $lesJs  
.= "$gh/src/shCore.js " ;
00024     $lesJs  
.= "$gh/scripts/shBrushPerl.js " ;
00025     $lesJs  
.= "$gh/scripts/shBrushPhp.js " ;
00026     $lesJs  
.= "$gh/scripts/shBrushJScript.js " ;
00027     $lesJs  
.= "$gh/scripts/shBrushXml.js " ;
00028     $lesJs  
.= "$gh/scripts/shBrushR.js " ;
00029     
00030     debutPage
("Code-source ","strict",$lesCss,$lesJs) ;
00031     debutSection
("100%") ;
00032     
00033     $aide 
"oui" ;
00034     $txtaide 
"Pour ne pas avoir les numéros de ligne, ajouter &amp;nl=non à l'URL." ;
00035     $txtaide 
"" ;
00036     
00037     # sans paramètre, on affiche l'aide
00038     
00039     if (isset(
$_GET["nomfic"]))  {
00040        $fn   
$_GET["nomfic"] ;
00041        $aide 
"non" ;
00042     } ; # finsi
00043     
00044     # affichage éventuel de l'aide
00045     
00046     if (
$aide=="oui") {
00047     
00048       h2
("Syntaxe : montresource.php?nomfic=".s_span("nom du fichier","gbleuf")) ;
00049       pvide
() ;
00050       h3
("Exemples :") ;
00051       blockquote
() ;
00052       p
() ;
00053       echo "- avec numéros de ligne : " 
;
00054       echo href
("montresource.php?nomfic=std.php","std.php") ;
00055       nbsp
(5) ;
00056       echo href
("montresource.php?nomfic=std.css","std.css") ;
00057       finp
() ;
00058       p
() ;
00059       echo "- sans numéros de ligne : " 
;
00060       echo href
("montresource.php?nomfic=std.php&amp;nl=non","std.php&amp;nl=non") ;
00061       finp
() ;
00062       finblockquote
() ;
00063     
00064       finSection
() ;
00065       finPage
() ;
00066       return ;
00067     
00068     } ; # fin si
00069     
00070     # il faut vérifier qu'on ne remonte pas avec le nom du fichier
00071     
00072     $li 
;
00073     $nl 
"" ;
00074     if (isset($_GET
["nl"])) { $nl $_GET["nl"] ; } ;
00075     if ($nl
=="non") { $li ; } ;
00076     
00077     $strp 
strpos("  $fn","..") ;
00078     $strc 
strpos("  $fn","./") ;
00079     $strr 
strpos("  $fn","/") ;
00080     $strh 
strpos("  $fn","http") ;
00081     
00082     if (($strp
) or ($strh) or ($strc) or ($strr) ) {
00083     
00084         echo "Non ! La remontée avec .. ou http://... ou / est interdite." 
;
00085         finSection
() ;
00086         finPage
() ;
00087         return ;
00088     
00089     }  ; # fin si
00090     
00091     # puis il faut vérifier que le fichier existe
00092     
00093     if (!
file_exists($fn)) {
00094         h1
("Fichier ".b("$fn")." introuvable.") ;
00095         finSection
() ;
00096         finPage
() ;
00097         return ;
00098     } ; # fin si
00099     
00100     # arrivé ici, on peut afficher...
00101     
00102     $typeFic 
substr($fn,strrpos($fn,".")) ;
00103     #h2(" extension : $typeFic") ;
00104     
00105     switch(
$typeFic) {
00106     
00107     case ".pl" 
:
00108     
00109        pre_fichier
($fn,"brush:perl",3) ;
00110        js
("SyntaxHighlighter.all()") ;
00111        break ;
00112     
00113     case ".r" 
:
00114     
00115        pre_fichier
($fn,"brush:r",3) ;
00116        js
("SyntaxHighlighter.all()") ;
00117        break ;
00118     
00119     case ".css" 
:
00120     
00121        pre_fichier
($fn,"brush:css",3) ;
00122        js
("SyntaxHighlighter.all()") ;
00123        break ;
00124     
00125     case ".js" 
:
00126     
00127        pre_fichier
($fn,"brush:js",3) ;
00128        js
("SyntaxHighlighter.all()") ;
00129        break ;
00130     
00131     case ".xml" 
:
00132     
00133        pre_fichier
($fn,"brush:xml",3) ;
00134        js
("SyntaxHighlighter.all()") ;
00135        break ;
00136     
00137     case ".html" 
:
00138     
00139        pre_fichier
($fn,"brush:xml",3) ;
00140        js
("SyntaxHighlighter.all()") ;
00141        break ;
00142     
00143     case ".htm" 
:
00144     
00145        pre_fichier
($fn,"brush:xml",3) ;
00146        js
("SyntaxHighlighter.all()") ;
00147        break ;
00148     
00149     case ".svg" 
:
00150     
00151        pre_fichier
($fn,"brush:xml",3) ;
00152        js
("SyntaxHighlighter.all()") ;
00153        break ;
00154     
00155     default:
00156     
00157        h1
("Listing du fichier $fn ") ;
00158        pvide
() ;
00159     
00160        sdl
() ;
00161        cmt
($txtaide) ;
00162        sdl
() ;
00163     
00164        echo "\n<!-- listing de 
$fn mode numéro de ligne = $li -->\n\n" ;
00165        div
() ;
00166     
00167        echo showSourcePhpGh
($fn,$typeFic,$li) ;
00168     
00169        findiv
() ;
00170        echo "<!-- fin du listing de 
$fn -->\n\n" ;
00171     
00172     } ; # fin de switch
00173     
00174     # pour php, on peut proposer plusieurs colorations syntaxiques
00175     
00176     if (
$typeFic==".php") {
00177       if ((file_exists
("voirsourcephp2.php")) and (file_exists("voirsourcephp1.php")) ){
00178     
00179             p
("texte") ;
00180             echo "La coloration syntaxique est réalisée par un "
.b("enrobage")." de la function php nommée " ;
00181             echo href
("http://www.manuelphp.com/php/function.highlight-file.php","highlight_file") ;
00182             finp
() ;
00183     
00184             p
("texte") ;
00185             echo " mais si vous préférez, vous pouvez utiliser celle de "
;
00186             echo href
("voirsourcephp2.php?nomfic=$fn","SyntaxHighlighter") ;
00187             echo " ou m&ecirc;me celle de " 
;
00188             echo href
("voirsourcephp1.php?nomfic=$fn","geshi")."." ;
00189             finp
() ;
00190     
00191     
00192       } ; # fin si
00193       p
("texte") ;
00194          echo " Pour ne pas voir les numéros de ligne, ajoutez "
.b("&amp;nl=non")." à la suite du nom du fichier. " ;
00195       finp
() ;
00196     } ; # fin si
00197     
00198     ############################################################
00199     
00200     function 
showSourcePhp($chemin) {
00201     
00202     ############################################################
00203     
00204       if (
file_exists($chemin)) {
00205         $str 
highlight_file($cheminTRUE);
00206       } else {
00207         return "Fichier "
.b("$chemin")." introuvable." ;
00208       } ; # fin si
00209     
00210        pre_fichier
($chemin,"brush:php",3) ;
00211        js
("SyntaxHighlighter.all()") ;
00212     
00213     } # fin de fonction  showSourcePhp
00214     
00215     
00216     ############################################################
00217     
00218     function 
showSourcePhpGh($chemin,$typeFic="txt",$nbLigne 1) {
00219     
00220     ############################################################
00221     
00222     
00223       if (
file_exists($chemin)) {
00224         $str 
highlight_file($cheminTRUE);
00225       } else {
00226         return "Fichier "
.b("$chemin")." introuvable." ;
00227       } ; # fin si
00228     
00229       // Nettoyage du code
00230     
00231        $str 
str_replace("<code>"''$str)  ;
00232        $str 
str_replace("</code>"''$str) ;
00233     
00234        $str 
preg_replace('/<span style="(.*)">(.*)<(.*)<\/span>/Um','<span style="\1">\2</span><\3',$str);
00235     
00236        // Explode sur le <br />
00237     
00238        $arr      
explode('<br />'$str);
00239        $numLigne 
;
00240        $nbe      
count($arr) ;
00241        $out 
"" ;
00242        foreach ($arr 
as $ligne){
00243          $ligne 
str_replace("\n"''$ligne);
00244          $numLigne
++ ;
00245          if ($numLigne
<$nbe) {
00246               if ($nbLigne
==1) {
00247                  $out 
.= '<span style="color:#000000">'.sprintf("%05d ",$numLigne)."</span>".snbsp(4) ;
00248               } ; # fin si
00249               $out 
.= $ligne."     <br />\n";
00250          } else {
00251               $out 
.=  "</span>\n" ;
00252          } ; # fin si on n'est pas à la dernière ligne
00253        } ; 
# fin pour chaque
00254        $out 
"<code>\n".$out."</code>\n";
00255        return $out
;
00256     
00257     } # fin de fonction showSourcePhpGh
00258     
00259     ############################################################
00260     
00261     function 
showSourcePerl($chemin) {
00262     
00263     ############################################################
00264     
00265       if (
file_exists($chemin)) {
00266         $str 
highlight_file($cheminTRUE);
00267       } else {
00268         return "Fichier "
.b("$chemin")." introuvable." ;
00269       } ; # fin si
00270     
00271        pre_fichier
($chemin,"brush:perl",3) ;
00272        js
('SyntaxHighlighter.all()') ;
00273     
00274     } ; # fin de fonction  showSourcePerl
00275     
00276     finSection
() ;
00277     finPage
() ;
00278     ?>

La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file

mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)