Listing du fichier chanteurs.php
00001 <?php
00002
00003 # (gH) -_- chanteurs.php ; TimeStamp (unix) : 16 Mars 2013 vers 22:58
00004
00005 include("../std.php") ;
00006 debutPage("Popularité des chanteurs","strict") ;
00007 h1("Popularité des chanteurs selon Google") ;
00008 h2("(en principe, il faut patienter au plus 20 secondes)") ;
00009 p() ; nbsp() ; finp() ;
00010 flush() ;
00011 blockquote() ;
00012 debutSection() ;
00013
00014 ##############################################################
00015 ##############################################################
00016 # #
00017 # Fonctions pour l'execice #
00018 # #
00019 ##############################################################
00020 ##############################################################
00021
00022 function urlgoog($expac) {
00023 # url pour demander à google de rechercher $expac
00024 return("http://www.google.fr/search?q=".rawurlencode($expac)."&start=0") ;
00025 } ; # fin fonCtion urlgoog
00026
00027 ##############################################################
00028 # #
00029 # la fonction qui suit a été écrite par un élève et utilise #
00030 # le parcours du fichier lié à l'URL et des fonctions #
00031 # classiques de chaines de caractères ; il vaut mieux #
00032 # utiliser des fonctions plus "aggressives" et des #
00033 # expressions régulières, mais nous laissons cette fonction #
00034 # pour l'exemple. #
00035 # #
00036 ##############################################################
00037
00038 function nbhits_non($expac) {
00039
00040 ## exemple de code renvoyé par Google en 2010 :
00041 ## sur un total d'environ <b>11</b> pour <b>tuteur perl</b>.
00042 ## exemple de code renvoyé par Google en 2014 :
00043 ## <div id=resultStats>Environ 6 840 000 résultats<nobr>
00044
00045 # on construit l'URL
00046
00047 $url = urlgoog("$expac") ;
00048 $fp = fopen($url,"r") ;
00049
00050 # il faut peut etre passer par le proxy
00051
00052 if (!$fp) { # il faut peut etre passer par le proxy
00053 $fp = fsockopen("iproxy.info-ua","3128") ;
00054 fputs($fp,"GET $url HTTP/1.0\n\n");
00055 } ; # fin de si
00056
00057 # on lit la page renvoyée par Google comme un fichier
00058 # le texte recherché ressemble à : sur un total d'environ <b>11</b> pour <b>tuteur perl</b>.
00059
00060 $nbhi = 0 ;
00061 while ((!feof($fp) and ($nbhi==0))) {
00062 $lig = fgets($fp, 4096) ;
00063 # print '<pre><pre>'.preg_replace("/</","<",$lig).'</pre>' ; # à détailler en cours pour debug
00064 flush() ;
00065 $chav = "Environ" ;
00066 $lhav = strlen($chav) ;
00067 $idpd = strpos($lig,$chav) ;
00068 if ($idpd>0) {
00069 $extr = substr($lig,$idpd+$lhav,50) ;
00070 $extr = strip_tags($extr) ;
00071 $chap = "r" ; # le r de résultats
00072 $idpf = strpos($extr,$chap) ;
00073 $nbhi = $extr ;
00074 if ($idpf>0) {
00075 $nbhi = substr($extr,0,$idpf) ;
00076 } ; # fin si
00077 # il peut arriver qu'on ait beaucoup de résultats, comme 22 900
00078 # stocké comme 22 900
00079 # et il faut l'écrire "à la française"
00080 } ; # fin si sur idpd
00081 } ; # fin de tant que
00082 fclose($fp) ;
00083
00084 # un peu de ménage
00085
00086 $nbhi = preg_replace("/\s+/","",$nbhi) ;
00087 $nbhi = preg_replace("/ /","",$nbhi) ;
00088
00089 return $nbhi ;
00090 } ; # fin de fonction nbhits_non
00091
00092 ##############################################################
00093 # #
00094 # l'anayse des pages renvoyées par Google montre qu'il n'est #
00095 # pas trop pénalisant de lire toute la page plutot que de #
00096 # ne lire que jusqu'au texte recherché. #
00097 # #
00098 ##############################################################
00099
00100
00101 function nbhits($expac) {
00102
00103 ## exemple de code renvoyé par Google : <div id=resultStats>Environ 6 840 000 résultats<nobr>
00104
00105 # on construit l'URL
00106
00107 $url = urlgoog("$expac") ;
00108 $fp = file_get_contents($url) ;
00109
00110 # on lit la page renvoyée par Google comme un fichier
00111 # le texte recherché ressemble à : Environ 11 résultats
00112
00113 ## $nbhi = strlen($fp) ; # pour débug et vérification
00114 #pre("cadre") ;
00115 #echo htmlentities($fp) ;
00116 #finpre() ;
00117 #exit() ;
00118
00119 $nbhi = 0 ;
00120 if( preg_match("/Environ(.*?)r/",$fp,$nbres)) { # le r de résultats !
00121
00122 $nbhi = $nbres[1] ;
00123
00124 # un peu de ménage
00125
00126 $nbhi = preg_replace("/\s+/", "",$nbhi) ;
00127 $nbhi = preg_replace("/ /","",$nbhi) ;
00128 $nbhi = preg_replace("/ /","",$nbhi) ;
00129
00130 } ; # fin si
00131
00132 return $nbhi ;
00133
00134 } ; # fin de fonction nbhits
00135
00136 ##############################################################
00137
00138 echo "\n\n\n" ;
00139 table(0,'20',"",'courant') ;
00140 tr() ;
00141 td() ;
00142
00143 /***************************************************/
00144 /* */
00145 /* mettez ici la liste que vous voulez */
00146 /* */
00147 /***************************************************/
00148
00149
00150 $mots = "Zazie Madonna Gaga Maroon%205 Dion Garou Bowie" ;
00151 $mots = "Louane Madonna Gaga Dion Garou Bowie Beatles" ;
00152 $mots = "Gaga" ;
00153
00154
00155 $tmots = preg_split("/\s+/",$mots) ;
00156 $nbm = count($tmots) ;
00157 $data = "" ;
00158 $xlab = "" ;
00159 $idm = 0 ;
00160
00161
00162 table(1,5,"collapse") ;
00163 tr() ;
00164
00165 # les chiffres
00166
00167 td() ; nbsp(3) ;
00168 echo s_span("Artiste","bleuf") ;
00169 nbsp(3) ; fintd() ;
00170 td() ; nbsp(3) ;
00171 echo s_span("Pages (millions)","bleuf") ;
00172 nbsp(3) ; fintd() ;
00173 fintr() ;
00174 foreach ($tmots as $mot) {
00175 $idm++ ;
00176 $nbp = nbhits($mot) ;
00177 $mdp = ($nbp/1000.0)/1000.0 ;
00178 $xlab .= $mot ;
00179 $data .= round($mdp) ;
00180 if ($idm<$nbm) {
00181 $xlab .= "_" ;
00182 $data .= "_" ;
00183 } ; # fin si
00184 tr() ;
00185 td() ; nbsp(7) ; echo urldecode($mot) ; nbsp(3) ; fintd() ;
00186 td("r") ; nbsp(3) ; echo sprintf("%8.1f",$mdp) ; nbsp(3) ; fintd() ;
00187 fintr() ;
00188 } ; # fin pour chaque
00189 fintable() ;
00190 fintd() ;
00191
00192 # un peu d'espace
00193
00194 td() ;
00195 pvide() ;
00196 fintd() ;
00197
00198
00199 # l'histogramme
00200
00201 td() ;
00202 $an = date("Y") ;
00203 $deburl = "http://forge.info.univ-angers.fr/~gh/jphistopct.php" ;
00204 $finurl = "vdata=$data&titr=".urlencode("Hits pour $an")."&xmrks=$xlab" ;
00205 ## echo " pour histogramme : <pre>$finurl</pre>\n" ;
00206 echo img("$deburl?taily=280&$finurl",'histogramme') ;
00207
00208 fintd() ;
00209
00210 fintr() ;
00211 fintable() ;
00212
00213 ###########################################################
00214
00215 p() ;
00216 echo href("montresource.php?nomfic=chanteurs.php","Code-source php de cette page","orange_stim nou").". " ;
00217 finp() ;
00218
00219
00220 ###########################################################
00221 ###########################################################
00222 finSection() ;
00223 finblockquote() ;
00224 finPage() ;
00225 ?>
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 à la page principale de (gH)