post_typo

Le pipeline post_typo permet de modifier le texte après que SPIP ait effectué les traitements typographiques prévus, et donc après le pipeline pre_typo également. Il est appelé par la fonction corriger_typo() de ecrire/inc/texte.php, fonction qui est appelée lors de l’utilisation des fonctions propre() ou typo().

$letexte = pipeline('post_typo', $letexte);

Exemple

Le plugin « Typo Guillemets » remplace dans un texte les guillemets " par l’équivalent adapté à la langue comme « et » pour le français. Il analyse pour cela le texte une fois les raccourcis typographiques appliqués comme cela :

function typo_guillemets_post_typo($texte) {
    // ...
    switch ($GLOBALS['spip_lang']) {
        case 'fr':
            $guilles="« $2 »"; //LRTEUIN
            break;
        // ...
    }

    // on echappe les " dans les tags ;
    // attention ici \01 est le caractere chr(1), et \$0 represente le tag
    $texte = preg_replace(',<[^>]*"[^>]*(>|$),msSe', "str_replace('\"','\01', \"\$0\")", $texte);

    // on corrige les guill restants, qui sont par definition hors des tags
    // Un guill n'est pas pris s'il suit un caractere autre que espace, ou
    // s'il est suivi par un caractere de mot (lettre, chiffre)
    $texte = preg_replace('/(^|\s)"\s?([^"]*?)\s?"(\W|$)/S', '$1'.$guilles.'$3', $texte);

    // et on remet les guill des tags
    return str_replace("\01", '"', $texte);
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/05/17

Traductions : English, français