SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 34 visiteurs en ce moment

Accueil du site > Navigation > Hyperliens > Transformer les liens texte en liens hypertexte

Transformer les liens texte en liens hypertexte

24 octobre 2003 – par Led – 22 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

Tous les forumeurs d’un site ne sont pas des SPIPeurs ou ne connaissent pas les balises HTML. Alors, lorsqu’ils saisissent une URL celle-ci apparaît simplement sous forme de texte. Le filtre NORM_LIENS permet de rendre ces liens fonctionnels pour les visiteurs du site.

Ainsi, par exemple ce texte http://www.spip.net sera transforme en un lien cliquable comme ceci : http://www.spip.net

Le filtre s’utilise avec toutes les balises contenant du texte de spip, mais prouveras son utilité surtout dans les boucles gérant les forums.

La syntaxe dans les squelettes doit être du type :
-  [(#TEXTE|norm_liens)]
-  [(#TEXTE|norm_liens{tag}]
tag doit avoir comme valeur blank, self, parent ou top.
Si aucun tag n’est spécifié la balise HREF qui normalisera le lien orphelin n’aura pas de target.

Texte à ajouter dans le fichiers « mes_fonction.php3 » :

Retour en haut de la page

Vos commentaires

  • Le 19 février 2010 à 16:59, par Joseph En réponse à : fonction eregi_replace déprécie en PHP 5

    Voici une version actualisée de la fonction qui utilise preg_replace à la place de reregi_replace.

    Par ailleurs, la prise en compte des liens entre parenthèses (http://exemple.net) a été jouée.

    function norm_liens($texte, $target='') {
        $target = '_'.$target;
        if ( $target != "_" ) {
            $texte = preg_replace('@ http://([^ <]*)@i', ' <a href="http://$1" target="'.$target.'">http://$1</a>', $texte);
            $texte = preg_replace('@ ftp://([^ <]*)@i', ' <a href="ftp://$1" target="'.$target.'">ftp://$1</a>', $texte);
            $texte = preg_replace('@ www.([^ <]*)@i', ' <a href="http://www.$1" target="'.$target.'">www.$1</a>', $texte);
            $texte = preg_replace('@ ftp.([^ <]*)@i', ' <a href="ftp://ftp.$1" target="'.$target.'">ftp.$1</a>', $texte);
            $texte = preg_replace('@\(http://([^ <]*)\)@i', ' (<a href="http://$1" target="'.$target.'">http://$1</a>)', $texte);
            $texte = preg_replace('@\(ftp://([^ <]*)\)@i', ' (<a href="ftp://$1" target="'.$target.'">ftp://$1</a>)', $texte);
            $texte = preg_replace('@\(www.([^ <]*)\)@i', ' (<a href="http://www.$1" target="'.$target.'">www.$1</a>)', $texte);
            $texte = preg_replace('@\(ftp.([^ <]*)\)@i', ' (<a href="ftp://ftp.$1" target="'.$target.'">ftp.$1</a>)', $texte);
            $texte = preg_replace('@^http://([^ <]*)@i', '<a href="http://$1" target="'.$target.'">http://$1</a>', $texte);
            $texte = preg_replace('@^ftp://([^ <]*)@i', '<a href="ftp://$1" target="'.$target.'">ftp://$1</a>', $texte);
            $texte = preg_replace('@^www.([^ <]*)@i', '<a href="http://www.$1" target="'.$target.'">www.$1</a>', $texte);
            $texte = preg_replace('@^ftp.([^ <]*)@i', '<a href="ftp://ftp.$1" target="'.$target.'">ftp.$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">http://([^ <]*)@i', '<p class="spip"><a href="http://$1" target="'.$target.'">http://$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">ftp://([^ <]*)@i', '<p class="spip"><a href="ftp://$1" target="'.$target.'">ftp://$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">www.([^ <]*)@i', '<p class="spip"><a href="http://www.$1" target="'.$target.'">www.$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">ftp.([^ <]*)@i', '<p class="spip"><a href="ftp://ftp.$1" target="'.$target.'">ftp.$1</a>', $texte);
            }
        else {
            $texte = preg_replace('@ http://([^ <]*)@i', ' <a href="http://$1">http://$1</a>', $texte);
            $texte = preg_replace('@ ftp://([^ <]*)@i', ' <a href="ftp://$1">ftp://$1</a>', $texte);
            $texte = preg_replace('@ www.([^ <]*)@i', ' <a href="http://www.$1">www.$1</a>', $texte);
            $texte = preg_replace('@ ftp.([^ <]*)@i', ' <a href="ftp://ftp.$1">ftp.$1</a>', $texte);
            $texte = preg_replace('@\(http://([^ <]*)\)@i', ' (<a href="http://$1">http://$1</a>)', $texte);
            $texte = preg_replace('@\(ftp://([^ <]*)\)@i', ' (<a href="ftp://$1">ftp://$1</a>)', $texte);
            $texte = preg_replace('@\(www.([^ <]*)\)@i', ' (<a href="http://www.$1">www.$1</a>)', $texte);
            $texte = preg_replace('@\(ftp.([^ <]*)\)@i', ' (<a href="ftp://ftp.$1">ftp.$1</a>)', $texte);
            $texte = preg_replace('@^http://([^ <]*)@i', '<a href="http://$1">http://$1</a>', $texte);
            $texte = preg_replace('@^ftp://([^ <]*)@i', '<a href="ftp://$1">ftp://$1</a>', $texte);
            $texte = preg_replace('@^www.([^ <]*)@i', '<a href="http://www.$1">www.$1</a>', $texte);
            $texte = preg_replace('@^ftp.([^ <]*)@i', '<a href="ftp://ftp.$1">ftp.$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">http://([^ <]*)@i', '<p class="spip"><a href="http://$1">http://$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">ftp://([^ <]*)@i', '<p class="spip"><a href="ftp://$1">ftp://$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">www.([^ <]*)@i', '<p class="spip"><a href="http://www.$1">www.$1</a>', $texte);
            $texte = preg_replace('@<p class="spip">ftp.([^ <]*)@i', '<a href="ftp://ftp.$1">ftp.$1</a>', $texte);
            }
        $texte = preg_replace('#([^ >]*)@([^ ,:!?&<]*)#i', ' <a href="mailto:$1@$2">$1@$2</a>', $texte);
        return $texte;
    }

    Répondre à ce message

  • Le 25 juillet 2006 à 14:59, par fcdi En réponse à : Transformer les liens texte en liens hypertexte

    je suis pas en avance mais j’essaie de faire ca sur une version 1.9 et cela ne marche pas

    j’ai mes liens dans mes articles en version texte mais ils ne se changent pas en html

    est ce du a fichier mes_fonctions.php3 ?

    Répondre à ce message

  • Le 19 avril 2007 à 02:34, par Patrice Vanneufville En réponse à : Transformer les liens texte en liens hypertexte

    Ce code semble un peu lourd. Cette idée de transformer les liens texte en liens hypertexte a été concrétisée dans le plugin [archive] Tweak SPIP

    Répondre à ce message

  • Le 20 septembre 2005 à 17:37, par Pierre Troll En réponse à : > Transformer les liens texte en liens hypertexte

    un problème avec les url contenant des ?
    un espace est généré rendant la fonction inopérante pour spip

    Répondre à ce message

  • Le 4 décembre 2003 à 17:37, par asso.bachant En réponse à : > Transformer les liens texte en liens hypertexte

    trés bon, voir même excellent, attention point trop n’en faut.

    dommage que spipcontrib ne l’utilise pas !

    http:\\www.bachant.net

    Répondre à ce message

  • Le 4 juillet 2005 à 09:09, par Jean-Marie En réponse à : > Transformer les liens texte en liens hypertexte

    Filtre sympatique mais qui ne fonctionne pas correctement lorsque le lien se situe dans une note. cf résultat depuis le lien. A+.

    Répondre à ce message

  • Le 7 novembre 2003 à 12:05, par bionet En réponse à : > Transformer les liens texte en liens hypertexte

    Me trompes-je ou c’est cette fonctionnalité qui est intégrée par défaut dans le futur SPIP1.7 ? (case à cocher dans la config de SPIP)

    Répondre à ce message

  • Le 25 novembre 2003 à 22:21, par jeppe En réponse à : > Transformer les liens texte en liens hypertexte

    attention, il y a quelques problèmes avec la ponctuation
    par exemple si l’adresse est suivie d’une virgule ou d’un point, cette virgule se trouve intégrée dans l’URL et provoque donc une erreur.

    Autre problème : il y a un conflit avec la façon dont spip gère la typographie, ainsi une url avec articles.php ?id_article=100 verra un espace s’intercaler avant le ?, et là encore l’url ne marche plus.

    Exemple de test :

    http://www.bellaciao.org

    http://paris.indymedia.org/articles.php3?id_article=10000

    quand au site http://www.bellaciao.org, il ne faut pas se méprendre
    voir au contraire /paris.indymedia.org/articles.php3?id_article=10000> avec plus de renseignements, ou alors http://paris.indymedia.org/articles.php3?id_article=10000.

    • Le 25 novembre 2003 à 22:33, par jeppe En réponse à : > Transformer les liens texte en liens hypertexte

      milles excuses : pour l’exemple, voilà le texte original.
      les url doivent donc être séparées par des blancs. nb : une url entre parenthèses ne marche pas (pas clickable).
      la duxième url bellaciao ne marche pas (à cause de la virgule, de même pour la dernière adress indymedia, polluée par le point final de la phrase). Une adresse email marche (c’est chouette).

      http://www.bellaciao.org
      http://paris.indymedia.org/articles.php3?id_article=10000
      quand au site http://www.bellaciao.org, il ne faut pas se méprendre voir au contraire (http://paris.indymedia.org/articles.php3?id_article=10000) avec plus de renseignements, ou alors http://paris.indymedia.org/articles.php3?id_article=10000.
      [et voir ça->http://www.bellaciao.org]
      mon email : jeppe@no-log.org

    • Le 25 novembre 2003 à 23:12, par jeppe En réponse à : > Transformer les liens texte en liens hypertexte

      autre point : les url complexes comme celle du monde avec des virgules donnet des résultats très bizarre. Essayez celle là :

      http://www.lemonde.fr/web/article/0,1-0@2-3218,36-343395,0.html

    • Le 6 décembre 2003 à 09:47, par Led En réponse à : > Transformer les liens texte en liens hypertexte

      Quelle idée aussi de mettre des virgules dans les URLs ! ;-)

      Nan, sérieusement, je me pencherais sur les problèmes que tu cites lorsque j’aurai un peu de temps de moi...

    • Le 27 mars 2004 à 14:52, par ? En réponse à : > Transformer les liens texte en liens hypertexte

      >quand au site http://www.bellaciao.org, il ne faut pas se >méprendre voir au contraire avec plus de renseignements, >ou alors http://paris.indymedia.org/articles.php3 ?>id_article=10000.

      je comprends pas ta phrase...

      « quand au site http://www.bellaciao.org, il ne faut pas se >méprendre voir au contraire »

       :))

      Tip

    Répondre à ce message

  • Le 23 février 2004 à 17:11, par Bobo En réponse à : > Transformer les liens texte en liens hypertexte

    Bonjour,

    je cherche à créer des liens externes à partir de la boucle DOCUMENTS. Le filtre « liens_ouvrants » n’a pas l’air de s’y appliquer. Et « norm_liens » non plus. Comment faire ?

    Répondre à ce message

  • Le 9 novembre 2003 à 22:31, par ygirod En réponse à : > Compatibilité avec typo normale

    Excellent !

    Et c’est compatible, si dans le reste du texte on y un lien du type :

     ?

    Yiannis

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Zpip-dist en HTML5

    15 juin 2010 – 10 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Une surcharge des squelettes Zpip-dist qui tire parti des nouvelles balises offertes par la spécification HTML5. Attention, ce plugin n’est plus compatible avec les nouvelles versions de Zpip, qui a connu plusieurs incompatibilités de nomenclature (...)

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.