function sommaire_d_une_page(&$texte, &$nbh3, $page = 0, $num_pages = 0) { static $index; if (!$index || $page === false) { $index = 0; } if ($page === false) { return; } // trouver quel <hx> est utilise $hierarchie = preg_match(',<h(\\d),', $GLOBALS['debut_intertitre'], $regs) ? $regs[1] : '3'; @define('_sommaire_NB_CARACTERES', 30); $self = nettoyer_uri(); //self();//$GLOBALS['REQUEST_URI']; // si on n'est pas en mode impression, on calcule l'image de retour au sommaire if (!defined('_CS_PRINT')) { $titre = _T('couteau:sommaire_titre'); $haut = "<a title=\"{$titre}\" href=\"" . $self . "#sommaire\" class=\"sommaire_ancre\"> </a>"; // modif cld } else { $haut = ''; } // traitement des intertitres <hx> preg_match_all(",(<h{$hierarchie}[^>]*)>(.*)</h{$hierarchie}>,Umsi", $texte, $regs); $nbh3 += count($regs[0]); $pos = 0; $sommaire = ''; // calcul de la page $p = $page ? _T('couteau:sommaire_page', array('page' => $page)) : ''; for ($i = 0; $i < count($regs[0]); $i++, $index++) { $ancre = " id=\"sommaire_{$index}\">"; // modif cld if (($pos2 = strpos($texte, $regs[0][$i], $pos)) !== false) { $titre = preg_replace(',^<p[^>]*>(.*)</p>$,Umsi', '\\1', trim($regs[2][$i])); // ancre 'haut', sauf si les blocs depliables utilisent h3... $texte = substr($texte, 0, $pos2) . $regs[1][$i] . $ancre . (strpos($regs[0][$i], 'blocs_titre') === false ? $haut : '') . $titre . substr($texte, $pos2 + strlen($regs[1][$i]) + 1 + strlen($regs[2][$i])); $pos = $pos2 + strlen($ancre) + strlen($regs[0][$i]); // tout le texte, sans les notes $brut = preg_replace(',\\[<a href=["\']#nb.*?</a>\\],', '', echappe_retour($regs[2][$i], 'CS')); // pas de glossaire if (function_exists('cs_retire_glossaire')) { $brut = cs_retire_glossaire($brut); } // texte brut $brut = preg_replace(',[\\n\\r]+,', ' ', textebrut($brut)); $lien = cs_propre(couper($brut, _sommaire_NB_CARACTERES)); $lien = preg_replace('/( |\\s)*[!?,;.:]+$/', '', $lien); // eviter une ponctuation a la fin $titre = attribut_html(couper($brut, 100)); // si la decoupe en page est active... $artpage = function_exists('decoupe_url') && (strlen(_request('artpage')) || $page > 1) ? decoupe_url($self, $page, $num_pages) : $self; $sommaire .= "<dd><a {$st} title=\"{$titre}\" href=\"{$artpage}#sommaire_{$index}\">{$lien}</a>{$p}</dd>"; // modif cld } } return $sommaire; }
function sommaire_nettoyer_titre($t) { // pas de notes $brut = preg_replace(',\[<a href=["\']#nb.*?</a>\],','', echappe_retour($t,'CS')); // pas de glossaire if(function_exists('cs_retire_glossaire')) $brut = cs_retire_glossaire($brut); // texte brut $brut2 = trim(preg_replace(',[\n\r]+,',' ',textebrut($brut))); // cas des intertitres en image_typo if(!strlen($brut2)) $brut2 = trim(extraire_attribut($brut, 'alt')); return $brut2; }