Page 1 sur 1

activer les liens sauf avec balise image

Posté : 05 sept. 2006, 13:33
par mankind
salut,

voici la fonction que j'utilise pour rendre automatiquement cliquables dans un article, les liens hypertextes (web, e-mail) grâce à l'ajout de la balise a href correspondante.

Code : Tout sélectionner

function activlien($lien) { $textelien=("\\2"); $textemail=("\\1"); $lien = eregi_replace( "(http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)", "<a href=\"\\1://\\2\" target=_blank>$textelien</a>", $lien); $lien = eregi_replace( "(([a-z0-9_]|\\-|\\.)+@([^[:space:]]*)([[:alnum:]-])\.([^[:space:]]*)([[:alnum:]-]))", "<a href=\"mailto:\\1\">$textemail</a>", $lien); return $lien ; }

Pour insérer des images dans un article, j'utilise des balises personnalisées dans le genre BBCode : [image] et [/image]. Et pour qu'il n'y ait pas un double traitement des urls (fonction activliens + fonction images) j'aimerais que la fonction activliens ci-dessus ne s'applique pas s'il y a une balise "[image]" accolée à l'adresse web - exemple :

[image]http://www...

autrement dit, si on trouve la séquence "[image]http://..." ou "[image]https://..." ou "[image]ftp://..." dans la chaine de caractères, on n'applique pas la fonction.

cela est-il possible ?

merci de votre aide...

Posté : 05 sept. 2006, 15:13
par mankind
ah j'ai trouvé, pour exclure une balise (ou un signe) il faut utiliser un accent circonflexe :

[code]$lien = eregi_replace(
"[^<image>](http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)",
"<a href=\"\\1://\\2\" target=_blank>$textelien</a>",
$lien);
[/code]


en l'espèce la fonction s'appliquera à une url commençant par http://... (donc un simple lien présent dans le corps du texte, mais pas à une url commençant par <image>http://... qui est destinée à être transformée en lien pour insérer une image.

bon merci à moi lol