Rendre un lien cliquable dans un texte et plus

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


zemage
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Ven Jan 13, 2006 20:04

Rendre un lien cliquable dans un texte et plus

Message le Jeu Fév 15, 2007 15:47

Bonjour, après des heures de recherches sur les expressions régulières
je ne trouve pas de solution.
Mon but : rendre dans un texte un liencliquable mais le rétrécir un peu en mettant 3 points pour le réduire s'il est supérieur à 30 caractères par ex.
ex : http://unsuperlientroplong...

$texte= ereg_replace("(http://)(([[:punct:]]|[[:alnum:]])*)","<a href=\"\\0\" target=\"_blank\">http://\\2</a>",$texte);

je voudrais faire un substring sur la partie \\2 pour afficher debutlien... si le l'url est trop long, hors je n'y arrive pas...
J'ai entenu parler de preg et preg callback mais impossible à modéliser, si quelqu'un sait ?
Merci


medium69
WRInaute accro
WRInaute accro
 
Messages: 2169
Inscription: Sam Mai 07, 2005 9:36

Message le Jeu Fév 15, 2007 17:10

Tiens je te donne cela brut de décoffrage :

Code: Tout sélectionner
if      ($nbCaractère > 80) {
                        $chaine = explode(' ', substr($titreLien, 0, 80) );
                        
                        echo '<a href="'.$_SERVER['REQUEST_URI'].'#som'.$numAncreSom.'" tabindex="'.$numTabIndex.'" title="'.$item['title'].'">';
                        for   ($a = 0; $a < count($chaine) - 1 ; $a ++) {
                           echo ' '.$chaine[$a];
                           }
                        echo '</a> '.$chaine[$a].substr($titreLien, 80);
                        }
                  else   {
                        echo '<a href="'.$_SERVER['REQUEST_URI'].'#som'.$numAncreSom.'" tabindex="'.$numTabIndex.'">'.$titreLien.'</a>';
                        }


C'est une partie d'un de mes codes qui n'affiche que 80 caractères maxi dans un lien, mais j'ai la flemme de l'adapter pour toi.

Tu n'as plus qu'a bosser un peu.


zemage
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Ven Jan 13, 2006 20:04

Message le Jeu Fév 15, 2007 17:19

Merci medium pour ta réponse, seulement cela est réalisable sur une chaine définit comme lien, là c'est un ensemble de texte plus des liens donc le nombre de caractères n'est pas un critère.

Ex: j'ai un texte avec des mots....et des liens....et des mots...et des liens...
Ta fonction n'est pas adaptable à ce cas, car on ne sait pas ou le lien est dans le texte d'ou le ereg..

J'avais trouvé hier un début de piste sur http://www.webrankinfo.com/forums/viewtopic_19326.htm
mais pas plus avancé dessus en fait, je ne trouve pas de syntaxe.


medium69
WRInaute accro
WRInaute accro
 
Messages: 2169
Inscription: Sam Mai 07, 2005 9:36

Message le Ven Fév 16, 2007 14:55

Dans ce cas, fais le en deux temps :

Met ton lien en place, puis contrôle sa longueur ; si longueur sup à x ; tu recoupes le lien non ?


zemage
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Ven Jan 13, 2006 20:04

Message le Ven Fév 16, 2007 20:36

J'ai essayé mais sans succés je vais continuer à chercher.Merci quand même.


NxtGen
WRInaute passionné
WRInaute passionné
 
Messages: 730
Inscription: Mar Oct 24, 2006 4:35

Message le Ven Fév 16, 2007 21:32

Peut etre avec ca :

Code: Tout sélectionner
<?
$texte = "tout ton texte avec des http://www.example.net, des mots, des liens";
$match_count = preg_match_all("# ([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+)*?) #si", $texte, $matches);
for ( $i=0; $i<$match_count; $i++) {
   $after = $matches[1][$i];
   $link = ( strlen($after)>30 ) ? substr($after, 0, 30)."..." : $after;
   $before = "<a href=\"$after\">$link</a>";
   $texte = str_replace($after, $before, $texte);
   }
echo $texte;
?>


Je suis pas sur de l'expression réguliere que j'ai utilisé, je l'ai pris dans les fonctions de PHPBB ;)


Patrice A.
Modérateur
Modérateur
 
Messages: 2413
Inscription: Ven Fév 11, 2005 19:36

Message le Sam Fév 17, 2007 16:21

Il me semble qu'ereg_replace (ou preg_replace ?) permet dès PHP4 d'utiliser une fonction PHP comme chaine de remplacement (donc la première fonction proposée, pourrait faire l'affaire).


zemage
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Ven Jan 13, 2006 20:04

Message le Sam Fév 17, 2007 17:19

NxtGen a écrit:Peut etre avec ca :

Code: Tout sélectionner
<?
$texte = "tout ton texte avec des http://www.example.net, des mots, des liens";
$match_count = preg_match_all("# ([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+)*?) #si", $texte, $matches);
for ( $i=0; $i<$match_count; $i++) {
   $after = $matches[1][$i];
   $link = ( strlen($after)>30 ) ? substr($after, 0, 30)."..." : $after;
   $before = "<a href="$after">$link</a>";
   $texte = str_replace($after, $before, $texte);
   }
echo $texte;
?>

Je suis pas sur de l'expression réguliere que j'ai utilisé, je l'ai pris dans les fonctions de PHPBB ;)


J'ai testé mais sans résultat...Merci a vous pour ces bouts de codes.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
  • Test de lien (type de redirection)
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Calcul du taux de liens vers des pages internes
    Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
  • Touch Graph Google Browser
    Description du TouchGraph Google Browser (outil externe) : il s'agit d'un outil graphique permettant de visualiser des sites similaires (selon Google). On peut sauter de site en site, et se rendre compte facilement des communautés de sites, ou des nébuleuses de sites traitant du même sujet.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités