Valid XHTML    Valid CSS2    

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)."&amp;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&#160;840&#160;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("/</","&lt;",$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&nbsp;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("/&#160;/","",$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&#160;840&#160;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("/&#160;/","",$nbhi) ;
00128     
$nbhi
= preg_replace("/&nbsp;/","",$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&amp;titr=".urlencode("Hits pour $an")."&amp;xmrks=$xlab" ;
00205     
## echo " pour histogramme : <pre>$finurl</pre>\n" ;
00206     
echo
img("$deburl?taily=280&amp;$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     
?>

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)