Titre en 2 couleurs

Un petit gadget pour mettre des titres en 2 couleurs.

C’est un gadget, mais ça m’amuse... Ce filtre permet d’afficher un titre en 2 couleurs, en séparant les mots en 2 parties à peu près égales.

Explications

Le filtre teste d’abord s’il y a l’un de ces caractères ,./-? dans le titre. Si c’est le cas, la coupure se fait à la suite du premier de ces caractères rencontré.

Si ce n’est pas le cas, le filtre cherche l’espace le plus proche du milieu du titre et fait la coupure à la suite.

Ca donne par exemple :
Un gadget : un titre en 2 couleurs
Un gadget : <span class="titre-altern">un titre en 2 couleurs</span>
soit : Un gadget : un titre en 2 couleurs

ou
Un titre en 2 couleurs
Un titre en <span class="titre-altern">2 couleurs</span>
soit : Un titre en 2 couleurs

Il est nécessaire d’avoir dans votre feuille de style :

span.titre-altern {
    color: #00f;
}

Comment l’utiliser ?

Comme tous les filtres : [(#TITRE|deux_couleurs)]

Le filtre maintenant

function deux_couleurs($titre) {
    // met un titre en 2 couleurs en séparant les mots en 2 parties (à peu près) égales
    $titre = trim($titre);
    // si le titre contient l'un de ces caractères ":", ",", "/", "?", "." suivi d'un espace, on coupe à ce niveau-là
    if (preg_match("/[:,\/\?\-\.\-]\s/", $titre))
        $titre = preg_replace("/^([^:,\/\?\.\-]+)([:,\/\?\-\.]\s)(.+)$/", "$1$2<span class=\"titre-altern\">$3", $titre,"</span>");
    // sinon on cherche l'espace le plus proche du milieu du titre
    else {
        // s'il y a plusieurs mots : on fait la séparation sur l'espace le plus proche du milieu du titre
       $pos = strpos($titre, " ");
       if (strpos($titre, " ") !== false) {
           $longueur = strlen($titre);
           $milieu = ceil($longueur / 2) - 1;
           $pos_ap = strpos($titre, " ", $milieu);
           $pos_av = $longueur - 1 - strpos(strrev($titre), " ", $milieu);
           $milieu = (($pos_ap===false) || (($pos_av!==false) && ($pos_ap-$milieu>=$milieu-$pos_av))) ?  $pos_av : $pos_ap;
           $titre = substr($titre, 0, $milieu) . "<span class=\"titre-altern\">" . substr($titre, $milieu) . "</span>";
        }
    }
    return $titre;
}

Des exemples sur ce site : http://www.solidaires.org/rubrique7.html

— Attention, La comparaison strpos($chaine, $recherche) === false n’est pas reconnue par PHP3 —

Discussion

Aucune discussion

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 20 octobre 2007