Valid XHTML     Valid CSS2    

Listing du fichier eltatt_inc.php avec syntaxhighlighter


        <?php
        #    (gH)   -_-  eltatt_inc.php  ;  TimeStamp (unix) : 07 Février 2011 vers 18:37
        
        #############################################################################
        
        function estW3Cvalide($uri) {
        
        #############################################################################
        
          # est-ce que le fichier bien formé ? successfully checked
          # successfully checked / Errors found
          # [Valid] / [Invalid]
          #
          #  <h2 id="results" class="invalid">Errors found while checking this document as HTML5!</h2>
          #  <h2 class="valid">This document was successfully checked as XHTML 1.0 Transitional!</h2>
          #
        
          $w3c = "http://validator.w3.org/check?uri=$uri" ;
          $resultat =  false ;
          $phrase   = "" ;
        
          $fhw3c = @fopen($w3c,"r") ;
        
          if ($fhw3c) {
             $fini  = false ;
             $txt = "" ;
             $vu1 = 0  ; # pour document invalide
             $vu2 = 0  ;
             $ci2 = "<h2 id=\"results\" class=\"invalid\">Errors found " ;
             $vu3 = 0  ; # pour document valide
             $vu4 = 0  ;
             $vu5 = 0  ;
             $ci4 = "<h2 class=\"valid\">This document was successfully checked" ;
        
             while ((!feof($fhw3c)) and (!$fini)) {
               $lig  = fgets($fhw3c,8196) ;
               $txt .= $lig ;
               if (strpos($txt,"[Invalid]")>0) { $vu1 = 1  ; } ;
               if (strpos($txt,$ci2)>0)        { $vu2 = 1  ; } ;
               if (strpos($txt,"[Valid]")>0)   { $vu3 = 1  ; } ;
               if (strpos($txt,$ci4)>0)        { $vu4 = 1  ; } ;
               if (strpos($txt,"</h2>")>0)                 { $vu5 = 1  ; } ;
               if (($vu1==1) and ($vu2==1))                { $resultat = false ; $fini = true ; } ;
               if (($vu3==1) and ($vu4==1) and ($vu5==1) ) { $resultat = true  ; $fini = true ; } ;
             } ; # fin tant que
             fclose($fhw3c) ;
        
             $debphrase = strpos($txt,"<h2") ;
             $finphrase = strpos($txt,"</h2>") ;
             $phrase    = substr($txt,$debphrase,$finphrase-$debphrase+5) ;
             $phrase    = preg_replace("/\n/"," ",$phrase);
             $phrase    = preg_replace("/\s+/"," ",$phrase);
             $phrase    = preg_replace("/This/"," &nbsp; This",$phrase);
             $phrase    = preg_replace("/Errors/","&nbsp; Errors",$phrase);
          } ; # fin si
        
          return(array($resultat,$phrase)) ;
        
        } # fin de fonction estW3Cvalide
        
        #############################################################################
        
        function analysePage($adr) {
        
        #############################################################################
        
        $cre = 0 ; # code-retour étendu
        $nbe = 0 ; # nombre d'éléments
        $nba = 0 ; # nombre d'attributs
        $nbc = 0 ; # nombre de commentaires
        $nbf = 0 ; # nombre de feuilles de style
        $nbj = 0 ; # nombre de fichiers javascript
        $tdr  = array() ; # tableau des résultats
        $tda  = array() ; # tableau des attributs comptés et triés
        $tdrp = array() ; # tableau temporaire des résultats
        
        $fh = @fopen($adr,"r") ;
        if (!$fh) {
          h2(" impossible d'ouvrir l'URL associée.") ;
          $cre = 1 ; # code-retour étendu
          return( array($cre,$nbe,$nba,$nbc,$nbf,$nbj,$tdr,$tda,$tdrp) ) ;
        } ; # fin si
        
        # on renvoie ce que dit le W3C à propos du fichier
        
        $resw3c = estW3Cvalide($adr) ;
        
        h2(" Validation par le W3C : ") ;
        
        blockquote() ;
          if ($resw3c[1]=="") {
            pvide() ;
          } else {
             echo $resw3c[1] ;
          } ; # finsi
        finblockquote() ;
        
        if (!$resw3c[0]) {
          h2(" Attention, ce document n'est pas valide selon le W3C en tant que page Web.") ;
          h2(" Les résultats qui suivent sont donc peut-&ecirc;tre incorrects.") ;
        } ; # fin si
        
        # on lit tout le fichier qu'on met dans la variable txt
        # via file_get_contents au lieu de la lecture classique avec fopen/fgets
        
          $txt = file_get_contents($adr) ;
        
        # on passe en revue la variable txt
        # pour bien détecter les éléments, on essaie de mettre une fin
        # de ligne en cas de fin de balise
        # on "chope" alors toutes les balises, ouvrantes comme fermantes
        
          $ntxt = str_replace(">",">\n",$txt) ;
          $er_bof = "/<(.*)?>/" ; # balise ouvrante/fermante
          preg_match_all($er_bof,$ntxt,$tbof) ;
        
          foreach ($tbof[1] as $elt) {
        
            $tdm = preg_split("/\s+/",$elt) ; # tableau des mots trouvés
            $lpm = $tdm[0] ;
        
            # on garde le reste du texte trouvé
        
            $tdm[0] = "" ;
            $rst = join(" ",$tdm) ;
        
            # et on cherche les attributs
        
            $er_atr1 = "/(.*?)='.*?'/"   ; # attribut modèle 1
            $er_atr2 = "/(.*?)=\".*?\"/" ; # attribut modèle 1
            $lattr   = "" ;
            preg_match_all($er_atr1,$rst,$tatr1) ;
            foreach ($tatr1[1] as $att1) {
               $lattr .= " $att1 " ;
            } ; # fin pour attr1
            preg_match_all($er_atr2,$rst,$tatr2) ;
            foreach ($tatr2[1] as $att2) {
               $lattr .= " $att2 " ;
            } ; # fin pour attr1
        
            # on peut donc construire le tableau à renvoyer
        
            if (!isset($tdrp[$lpm])) { ;
               $tdrp[$lpm] = 1 ;
               $tdra[$lpm] = $lattr ;
            } else {
               $tdrp[$lpm] += 1 ;
               $tdra[$lpm] .= $lattr ;
            } ; # fin si
        
          } ; # fin pour elt
        
        # ensuite, on passe en revue ce qu'on a trouvé comme balises :
        # on ne s'intéresse qu'aux balises ouvrantes pour
        # analyser leur contenu en termes d'attribut
        
          foreach ($tdrp as $cle=>$valeur) {
        
            $elt = 1 ;
            $pca = substr($cle,0,1) ;
            $lat = $tdra[$cle] ;
            $lat = trim($lat) ;
            $lat = str_replace("/\s+/"," ",$lat) ;
            $tal = preg_split("/\s+/",$lat) ;
        
            # comptage des attributs (= mots)
        
            $cdm = array() ;
            foreach ($tal as $mot) {
              if (!isset($cdm[$mot])) {
                $cdm[$mot] = 1 ;
              } else {
                $cdm[$mot]++ ;
              } ; # fin pour
            } ; # fin pour chaque
        
            # tri et stockage des comptages d'attribut
        
            ksort($cdm) ;
            $ldc = "" ;
            foreach ($cdm as $mot=>$cnt) {
              if (strlen(trim($mot))>0) {
                $ldc .= "$mot ($cnt) ; " ;
                $nba += $cnt ;
              } ; # fin de si
            } ; # fin pour chaque
            # on remplace le dernier ; par un point
            if (strlen(trim($ldc))>0) {
              $ldc = substr($ldc,0,strlen($ldc)-3)."." ;
            } ; # fin si
        
            ## on ne conserve que les éléments SGML ou les balises de début
        
            ## if ($pca=="?") { $elt = 0 ; }
            if ($pca=="/")      { $elt = 0 ; }
            if ($cle=="!--")    { $nbc = $valeur ; } ;
            if ($cle=="script") { $nbj = $valeur ; } ;
            if ($cle=="link")   { $nbf = $valeur ; } ;
            if ($elt==1)        {
               $nbe+= $valeur ;
               $tdr[$cle] = $valeur ;
               $tda[$cle] = $ldc ;
           } ; # fin si
          } ; # fin pour
        
          # il ne reste plus qu'à trier les éléments par ordre alphabétique
        
          ksort($tdr) ;
        
        return( array($cre,$nbe,$nba,$nbc,$nbf,$nbj,$tdr,$tda) ) ;
        
        } # fin de fonction analysePage($adr) {
        
        #############################################################################
        
        function codeHtml($url) {
        
        #############################################################################
        
        blockquote() ;
        pre("cadre") ;
        $fh = fopen($url,"r") ;
        echo"\n" ;
        while (!feof ($fh)) {
              $lig = fgets($fh, 4096) ;
              $lig = preg_replace("/\n/","",$lig);
              $lig = preg_replace("/>/",">\n",$lig);
              $lng  = strlen($lig) ;
              $idc = 0 ;
              $ligs = "" ;
              while ($idc<$lng) {
                $cc = substr($lig,$idc,1) ;
                if ($cc=="<") { $cc = "&lt;" ; } ;
                if ($cc==">") { $cc = "&gt;" ; } ;
                if ($cc=="&") { $cc = "&amp;" ; } ;
                $ligs .= $cc ;
                $idc++ ;
              } ; # fintant que
              echo $ligs ;
        } ; # fin tant que
        fclose($fh) ;
        finpre() ;
        finblockquote() ;
        
        } # fin de fonction codeHtml
        
        #############################################################################
        
        ?>
        

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)