Пример #1
0
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\">&nbsp;</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('/(&nbsp;|\\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;
}
Пример #2
0
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;
}