[PHP]Générer un sommaire automatique

Résolu
_juana_ Messages postés 2 Statut Membre -  
 Keuronde -
Bonjour,

Je veux générer un sommaire à partir d'un fichier HTML lu en PHP.
Il faut donc que je repère dans ce fichier des patterns <hN>titre</hN> (ou '<h[0-9]*>.*</h[0-9]*>' en expression régulière) pour constituer ce sommaire, c'est-à-dire qu'il me faut les variables titre et N.
Le problème c'est que je ne trouve pas comment extraire ces infos de mon fichier !

Merci pour votre aide.
Configuration: Linux
Firefox 1.5.0.10

4 réponses

  1. _juana_ Messages postés 2 Statut Membre
     
    Merci.
    C'est pas exactement ce que je cherchais mais finalement j'ai bidouiller un truc avec preg_split :

    function makeTableOfContents($file) {
    echo "\t<b>Table of contents</b>\n";
    echo "\t<ol>\n";

    $tableau = file($file);
    $pattern='<h[0-9]*>.*</h[0-9]*>';
    $oldN = 3;
    // For each line of the HTML file, gets <hn>title</hn>
    while(list($cle,$str) = each($tableau)) {
    // If line contains pattern
    if (eregi($pattern, $str)) {
    $chars = preg_split('/<h/', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
    // Get n
    $fullN = $chars[1][0];
    $n = substr($fullN, 0, 1); // only works for digit titles (from h0 to h9)
    // Get title
    $fullTitle = substr($fullN, 2);
    $closeTag = '/</';//.$n.'>/';
    $titleSplit = preg_split($closeTag, $fullTitle, -1, PREG_SPLIT_OFFSET_CAPTURE);
    $title = substr($fullTitle, 0, ($titleSplit[1][1]-1));

    // Display list
    if($n >= 3) { // Don't display titles h1 and h2
    if ($n > $oldN) {
    echo "\t<ol>\n";
    }
    else if ($n < $oldN) {
    echo "\t</ol>\n\t</li>\n";
    }
    echo "\t<li>".$title."\n";
    $oldN = $n;
    }
    }
    }
    fclose($file);
    echo "\t</ol>\n";
    }
    0
  2. juldas
     
    je veux générer automatiquement le somaire d'un document de 70p comment procéder
    0
  3. Keuronde
     
    Merci pour ce script vraiment pratique !

    Par contre je pense que la ligne qui ferme le fichier est inutile, la fonction file s'en occupe déjà.
    Donc le fclose($file) est à supprimer, il génère une erreur chez moi...

    Merci encore !
    0