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/"," This",$phrase); $phrase = preg_replace("/Errors/"," 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-ê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 = "<" ; } ; if ($cc==">") { $cc = ">" ; } ; if ($cc=="&") { $cc = "&" ; } ; $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 à la page principale de (gH)