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}]
Où 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 » :
/* Filtre NORM_LIENS v2.0 - 29 juillet 2003 - Par Led
Permet de normaliser les liens lorsque ceux-ci sont orphelins (sans balise
HREF). Par exemple:
"http://www.url.com" deviendra "<a href="http://www.url.com">http://www.url.com</a>"
Le filtre s'utilise avec les balises #CHAPO, #TEXTE, #PS, #NOTES,
#INTRODUCTION, #DESCRIPTIF et #BIO.
SYNTAXE DANS LES SQUELETTES:
[(#TEXTE|norm_liens)]
[(#TEXTE|norm_liens{tag}]
Où tag doit avoir comme valeur blank, self, parent ou top.
Si aucun tag n'est spécifié la balise HREF n'aura pas de target.
ATTENTION: Si vous désirez utiliser ce filtre avec le filtre CIBLES_LIENS (du
21 juillet 2003 et écrit par moi-même) sur une même balise SPIP il
faut obligatoirement placer le filtre NORM_LIENS en premier.
Exemples: [(#TEXTE|norm_liens|cibles_liens)]
[(#TEXTE|norm_liens{tag}|cibles_liens)]
*/
function norm_liens($texte, $target='') {
$target = '_'.$target;
if ( $target != "_" ) {
$texte = eregi_replace(' http://([^ <]*)', ' <a href="http://\\1" target="'.$target.'">http://\\1</a>', $texte);
$texte = eregi_replace(' ftp://([^ <]*)', ' <a href="ftp://\\1" target="'.$target.'">ftp://\\1</a>', $texte);
$texte = eregi_replace(' www.([^ <]*)', ' <a href="http://www.\\1" target="'.$target.'">www.\\1</a>', $texte);
$texte = eregi_replace(' ftp.([^ <]*)', ' <a href="ftp://ftp.\\1" target="'.$target.'">ftp.\\1</a>', $texte);
$texte = eregi_replace('^http://([^ <]*)', '<a href="http://\\1" target="'.$target.'">http://\\1</a>', $texte);
$texte = eregi_replace('^ftp://([^ <]*)', '<a href="ftp://\\1" target="'.$target.'">ftp://\\1</a>', $texte);
$texte = eregi_replace('^www.([^ <]*)', '<a href="http://www.\\1" target="'.$target.'">www.\\1</a>', $texte);
$texte = eregi_replace('^ftp.([^ <]*)', '<a href="ftp://ftp.\\1" target="'.$target.'">ftp.\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">http://([^ <]*)', '<p class="spip"><a href="http://\\1" target="'.$target.'">http://\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">ftp://([^ <]*)', '<p class="spip"><a href="ftp://\\1" target="'.$target.'">ftp://\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">www.([^ <]*)', '<p class="spip"><a href="http://www.\\1" target="'.$target.'">www.\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">ftp.([^ <]*)', '<p class="spip"><a href="ftp://ftp.\\1" target="'.$target.'">ftp.\\1</a>', $texte);
}
else {
$texte = eregi_replace(' http://([^ <]*)', ' <a href="http://\\1">http://\\1</a>', $texte);
$texte = eregi_replace(' ftp://([^ <]*)', ' <a href="ftp://\\1">ftp://\\1</a>', $texte);
$texte = eregi_replace(' www.([^ <]*)', ' <a href="http://www.\\1">www.\\1</a>', $texte);
$texte = eregi_replace(' ftp.([^ <]*)', ' <a href="ftp://ftp.\\1">ftp.\\1</a>', $texte);
$texte = eregi_replace('^http://([^ <]*)', '<a href="http://\\1">http://\\1</a>', $texte);
$texte = eregi_replace('^ftp://([^ <]*)', '<a href="ftp://\\1">ftp://\\1</a>', $texte);
$texte = eregi_replace('^www.([^ <]*)', '<a href="http://www.\\1">www.\\1</a>', $texte);
$texte = eregi_replace('^ftp.([^ <]*)', '<a href="ftp://ftp.\\1">ftp.\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">http://([^ <]*)', '<p class="spip"><a href="http://\\1">http://\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">ftp://([^ <]*)', '<p class="spip"><a href="ftp://\\1">ftp://\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">www.([^ <]*)', '<p class="spip"><a href="http://www.\\1">www.\\1</a>', $texte);
$texte = eregi_replace('<p class="spip">ftp.([^ <]*)', '<a href="ftp://ftp.\\1">ftp.\\1</a>', $texte);
}
$texte = eregi_replace('([^ >]*)@([^ ,:!?&<]*)', ' <a href="mailto:\\1@\\2">\\1@\\2</a>', $texte);
return $texte;
}
Discussions par date d’activité
10 discussions
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.
Répondre à ce message
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 ?
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
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
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
trés bon, voir même excellent, attention point trop n’en faut.
dommage que spipcontrib ne l’utilise pas !
http:\www.bachant.net
Oui c’est une très bonne contrib, très utile.
Répondre à ce message
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
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)
Je ne sais pas. J’ai téléchargé la beta, j’irai voir...
Je n’ai rien vu à ce sujet dans la v1.7. Tu as vu ça où ?
C’est une option que j’ai vu dans la partie administration de SPIP 1.7b3 et qui s’appelle « liens hypertextes ».
Je ne sais pas ce que signifie cette option (case à cocher) mais cela ressemble bigrement à cet article.
Autant pour moi, après vérification il s’agit d’une option qui permet de rajouter une ligne lors de la saisie des articles pour ajouter un lien internet un peu comme ce qui existe déjà dans les brèves et les forums.
pas autant pour moi, aux temps pour moi .. ou à la rigueur aux tempes pour moi
Répondre à ce message
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 <http://paris.indymedia.org/articles...> avec plus de renseignements, ou alors http://paris.indymedia.org/articles.php3?id_article=10000.
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
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
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...
>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
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
Excellent !
Et c’est compatible, si dans le reste du texte on y un lien du type :
?
Yiannis
Et c’est compatible, si dans le reste du texte on y un lien du type :
Oui.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |