rn7.net/wiki

ApplicationGenSom

PagePrincipale :: rn7.net :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.179.227
Ce script permet de générer un sommaire de pages (au formats RSS ou XHTML) à partir de métadonnées contenues dans les fichiers HTML.
Ce sommaire peut être augmenté d'autres métadonnées :

L'outil est encore expérimental. Toutes les métadonnées ne sont pas encore réalisées. D'autres métadonnées viendront s'ajouter à celles-ci.

Usage

Ce script fonctionne :


Source


<?php


/*

gen_som.php
Par Charles Népote
Version 0.1, 08/11/2004 -- 10:34

Prérequis : PHP 4.3.0
(utilisation de la fonction file_get_contents())

*/



// -- configuration ----------------------------------------------

// Fichier d'en-tête par défaut
$url_debut='';        // URL du premier fichier
$max_nb='4';        // '1' à '9999'
$fichier_cible='i.rss';    // index.rss
$sens='+';        // '-' ou '+'
$base='http://127.0.0.1/adm/'//
$titre_fil='';        // Titre du fil
$desc_fil='';        // Description du fil
$url_site='';        // URL du site
$url_image='';        // URL d'une image représentant le fil ou le site
$url_recherche='';    // URL du moteur de recherche du site
$sortie='';        // 'fichier-rss' ou 'fichier-xhtml' ou 'fichier-code-xhtml' ou
            // 'service-rss' ou 'service-xhtml' ou 'service-code-xhtml'
$fic_config='';        //


// A venir (?)
$periode='';        // 31
$mois='';        // mars

/*
$fichier_entete = 'en-tete.html';
$fichier_gen = '/home/httpd/vhosts/rn7.net/httpdocs/adm/index.html';
$fichier_cible = '/home/httpd/vhosts/rn7.net/httpdocs/index.html';
$url_cible = 'http://rn7.net/index.html';
*/


// -- Constantes ------------------------------------------------
$entete_rss=    "<?xml version=\"1.0\"?>\n".
        
"<rdf:RDF\n".
        
" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n".
        
" xmlns:rss=\"http://purl.org/rss/1.0/\"\n".
        
">\n";
$doctype_1=    "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \n".
        
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
$html_tag=    "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n";




// -- traitements ------------------------------------------------

// -- calcul des variables ---------------------------------------
if(isset($_GET["fic_config"]))
{
    
$fic_config $_GET["fic_config"];
    
// Vérifier que le fichier existe
    //
    
$f fopen($fic_config'r')
        or die(
"Fichier de configuration incorrect : ".$fic_config.".");
    
$contenu_config file_get_contents($fic_config);
    
fclose($f) or die($php_errormsg);
    
// Charger toutes les valeurs
    //
    //parse_ini_file() (?)
    //
}
if(isset(
$_GET["url_debut"])) $url_debut $_GET["url_debut"];
if(isset(
$_GET["max_nb"])) $max_nb $_GET["max_nb"];
if(isset(
$_GET["fichier_cible"])) $fichier_cible $_GET["fichier_cible"];
if(isset(
$_GET["sens"])) $sens $_GET["sens"];
if(isset(
$_GET["base"])) $base $_GET["base"];
$url_gen $base.$fichier_cible;



// -- Fichier généré ------------------------------------------

//if ($result=''|$result='fichier_rss'|$result='fichier_code_xhtml'|$result='fichier_xhtml')
//{


// Copie du fichier généré vers le fichier cible
/*if (isset($_GET["copie"]))
{
    copy($fichier_gen, $fichier_cible)
        or die("<p>Impossible de copier : \"". $php_errormsg ."</p>");
    echo    "<p>Copie effectuée ! => <a href=\"" . $url_cible . "\">Voir le résultat</a></p>\n".
        "</body>\n</html>\n";
    exit;
}*/


echo $doctype_1;
echo 
$html_tag;
echo <<<FIN
<head>
<title>Gen_som</title>
<meta http-equiv="content-type" content="text/html; charset=iso-latin-1" />
<style type="text/css">
#form p {
    line-height: 1.2em;
}
#form label {
    float: left;    /*** Très important, ne pas suprimer ! ***/
    width: 25%;    /*** Les intitulés prennent 1/3 de la largeur totale du formulaire... ***/
    text-align: right;    /*** ... et ils sont alignés à droite... ***/
    margin: 0;
    padding: 0 .5em 0 0;
    line-height: 1.2em;
    }
#form input {
    width: 73%;
    }
</style>
</head>
<body>
FIN;


// -- Formulaire pour la gestion du fichier de config. --------
//
echo "<form action=\"gen_som.php\" method=\"get\">\n";
//echo "<p>\n";
echo "<fieldset id=\"form_config\">\n";
echo 
"<legend>Configuration (données facultatives)</legend>\n";
echo 
"<p><label>URL du fichier de config. : </label><input name=\"fic_config\" value=\"".$fic_config."\" /></p>\n";
echo 
"<p><input type=\"submit\" value=\"Ok\" /></p>\n";
echo 
"</fieldset>\n";
//echo "</p>\n";
echo "</form>\n";



// -- Formulaire de départ ------------------------------------
//
echo "<form action=\"gen_som.php\" method=\"get\">\n";
//echo "<p>\n";
echo "<fieldset id=\"form\">\n";
echo 
"<legend>Formulaire d'envoi</legend>\n";
echo 
"<p><label>* URL de départ : </label><input name=\"url_debut\" value=\"".$url_debut."\" /></p>\n";
echo 
"<p><label>* Nombre maximum d'items : </label><input name=\"max_nb\" value=\"".$max_nb."\" /></p>\n";
echo 
"<p><label>Titre du fil : </label><input name=\"titre_fil\" value=\"".$titre_fil."\" /></p>\n";
echo 
"<p><label>Description du fil : </label><input name=\"desc_fil\" value=\"".$desc_fil."\" /></p>\n";
echo 
"<p><label>URL du site relatif au fil : </label><input name=\"url_site\" value=\"".$url_site."\" /></p>\n";
echo 
"<p><label>URL de l'image du fil : </label><input name=\"url_image\" value=\"".$url_image."\" /></p>\n";
echo 
"<p><label>URL de recherche de l'objet du fil : </label><input name=\"url_recherche\" value=\"".$url_recherche."\" /></p>\n";
echo 
"<p><input type=\"submit\" value=\"Ok\" /></p>\n";
echo 
"</fieldset>\n";
//echo "</p>\n";
echo "<p><em>* Champs obligatoires</em></p>\n";
echo 
"</form>\n";


// -- Informations --------------------------------------------
echo "<p>URL de départ : <a href=\"" $url_debut "\">" $url_debut "</a></p>\n";
//echo "<p>".$_SERVER["DOCUMENT_ROOT"]."</p>\n";
echo "<p>URL du fichier généré : <a href=\"".$url_gen."\">".$url_gen."</a></p>\n";
echo 
"\n\n<hr />\n";


// -- Traitements ---------------------------------------------


// S'il n'y a pas de source spécifiée
if ($url_debut=="")
{
    echo    
"<p>Pas de source spécifiée.</p>\n";
        
"</body>\n</html>\n";
}


// Si le fichier source est spécifié on attaque
else
{
    
$tableau = array();
    
$tableau["url"] = $url_debut;
    
// Lit le fichier de départ
    
$i $max_nb;
    while (isset(
$tableau["url"]) && $i 0)
    {
        
$tableau LitFichier($tableau["url"]);
        
//echo " ** ", $i, " ** ", $tableau["url"], "<br />\n";
        
$i--;
    }
}


/*
// Génère le fichier cible
$cible = fopen($fichier_gen, 'w+');
fputs($cible, $entete.$corps.$pied);
fclose($cible) or die($php_errormsg);
echo "<p>Fichier ".$fichier_gen." correctement enregistré.</p>\n";
*/


echo "\n\n</body>\n</html>\n";

// -- Fin des traitements -----------------------------





// -- fonction d'analyse des fichiers -----------------
function LitFichier($url)
{
    
$array = array();
    
$f fopen($url'r') or die("Fichier spécifié incorrect.");
    
$contenu file_get_contents($url);
    
fclose($f) or die($php_errormsg);
    
    
// -- Titre
    //
    
preg_match("#.*<title>(.*)</title>.*#s"$contenu$matches);
    
$array["title"] = $matches[1];
    echo 
"<p><a href=\"".$url."\">".$array["title"]."</a></p>\n";
    
//preg_match("/.*<meta name=\"DC.Title\" content=\"(.*)\".*/s", $contenu, $matches);
    //$array["title"] = $matches[1];

    // -- Date
    // Exemple : <meta name="DC.Date" scheme="W3CDTF" content="2004-10-25" />
    //
    
preg_match("#.*<meta name\=\"DC\.Date\" scheme=\"W3CDTF\" content\=\"(.*)\" />.*#"$contenu$matches);
    
$array["date"] = $matches[1];
    
    
// -- Lien
    //
    //$array["permalien"] = preg_replace("/.*<body>(.*)<\/body>.*/s", "$1", $contenu);
    // Exemple : <link rel="Prev" href="./1.html" />
    
preg_match("#.*<link rel\=\"Prev\" href\=\"(.*)\" />.*#"$contenu$matches);
    if (isset(
$matches[1]))
    {
        
$array["url"] = $matches[1];
        
// Transformation de l'URL si ce n'est pas une URL absolue
        
if (preg_match("#^\.(/.*)#"$array["url"], $matches2))
        {
            
$rep_courrant preg_replace("#^(.*)/(.*)$#""$1"$url);
            
//echo $rep_courrant, " ***\n";
            
$array["url"] = $rep_courrant $matches2[1];
        }
    }
    
    
// Résultat
    
return $array;
}

?>


FAQ

A partir du moment où il y a une date, pourquoi vouloir utiliser les "prev" ?
Parce qu'avec un grand nombre de fichier il faudrait balayer tous les fichiers ; ici on ne fait que le nécessaire.

Prospective


Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]