juste un petit code qui pourra peut-être aider. Petite adaptation d'un script jQuery d'autonum que j'ai adapté en php.
L'objectif est de rajouter automatiquement les numéros de chapitre en fonction des balises h1 à h9.
Le script rajoute aussi automatiquement les bookmark pour automatiser le sommaire.
Contraintes, la fin du h doit être sur la même ligne que l'ouverture et ne pas comporter d'espace dans la balise.
// $fic est le fichier à charger
$pages_rapport_html = file($fic, FILE_IGNORE_NEW_LINES || FILE_SKIP_EMPTY_LINES);
// On calcule les bookmark, l'autonum en fonction des headers
$segments = array();
foreach($pages_rapport_html as $p) {
if(preg_match("/h([0-9])/", $p, $heads)) {
$level = intval($heads[1]);
if(count($segments) == $level) {
// from Hn to another Hn, just increment the last segment
$segments[$level-1]++;
} elseif(count($segments) > $level) {
// from Hn to Hn-x, slice off the last x segments, and increment the last of the remaining
$segments = array_slice($segments, 0, $level);
$segments[$level-1]++;
} elseif(count($segments) < $level) {
// from Hn to Hn+x, (should always be Hn+1, but I'm doing some error checks anyway)
// add '1' x times.
for($i = 0; $i < ($level-count($segments)); $i++) {
$segments[] = 1;
}
}
$autonum = join('.', $segments);
$level--;
// on update la section pour rajouter l'autonum et le bookmark
$p = preg_replace("/(<h[0-9]>)(.*)(<\/h[0-9]>)/", "<bookmark title=\"$autonum \2\" level=\"$level\"></bookmark> \1 $autonum \2 \3", $p);
}
$rapport_html .= $p;
}
$rapport_html est ensuite le nouveau code HTML à insérer dans une section <page>, et le tour est joué.
En espérant que ça puisse aider.
a+
yo