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);
}