Regex pour transformer les URL en lien cliquable

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Regex pour transformer les URL en lien cliquable

Message le Mar Oct 12, 2010 20:12

Bonjour,

tout est dans le titre,

j'ai pour l'instant un:
Code: Tout sélectionner
$message= preg_replace('!http://[a-z0-9._/-]+!i', '<a href="$0" target="_blank" rel="nofollow">$0</a>', $message);



Ca fonctionne sauf pour les URLS qui contiennent des %20.

J'ai cherché sur mon super pote gg mais tout ce que je trouve emploie des eregi_replace qui est maintenant déconseillé.

QQun aurait ça sous la main ?

Merci


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Re: Regex pour transformer les URL en lien cliquable

Message le Mar Oct 12, 2010 20:23

J'up avec du nouveau,

donc maintenant j'ai trouvé et compris ceci (ca réduit aussi les URL)
Code: Tout sélectionner
$callback_function = create_function(
                        '$matches',
                        '$link_displayed = (strlen($matches[0]) > 25) ? substr( $matches[0], 0, 40).\'[&hellip;]\'.substr($matches[0], -10) : $matches[0];
                         return \'<a href="\'.$matches[0].\'" title="\'.$matches[0].\'" target="_blank" rel="nofollow">\'.$link_displayed.\'</a>\';'
                        );
            $message = preg_replace_callback($pattern, $callback_function, $message);


Mais la même, en local, ca fonctionne impec.
Online, ca me termine toutes mes urls / >.
Exemple: http://www.google.fr
/>

kesako ?

C'est incompatible ces deux fonctions?

idefix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 319
Inscription: 17 Jan 2007

Re: Regex pour transformer les URL en lien cliquable

Message le Mar Oct 12, 2010 22:25

Pourquoi est-ce que le premier code ne marche pas?
Question bête, tu as bien essayé d'ajouté % dans la regex?


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Re: Regex pour transformer les URL en lien cliquable

Message le Mar Oct 12, 2010 22:48

Salut,

je reprends en détaillant un max du début (oubliez mes premiers posts) pour être le plus clair possible

Donc ma page de traitement:
Code: Tout sélectionner
$message = stripslashes(nl2br($donnees2['message'])); // je récup la données.

// je rends les url cliquable:
$pattern = '`((?:https?|ftp)://\S+?)(?=[[:punct:]]?(?:\s|\Z)|\Z)`';
         $callback_function = create_function(
                        '$matches',
                        '$link_displayed = (strlen($matches[0]) > 25) ? substr( $matches[0], 0, 40).\'[&hellip;]\'.substr($matches[0], -10) : $matches[0];
                         return \'<a href="\'.$matches[0].\'" title="\'.$matches[0].\'" target="_blank" rel="nofollow">\'.$link_displayed.\'</a>\';'
                        );
         $message = preg_replace_callback($pattern, $callback_function, $message);


Soit
$message1='http://www.example.com';
$message2='ceci est un exemple http://www.example.com, et ça une url';
Le problème:
Si je laisse le code tel quel, quand je fais echo de $message2, ca donne:
ceci est un exemple http://www.example.com, et ça une url /> (notez le /> en fin de phrase).

Sur $message1 je n'ai pas ce />

J'ai trouvé le coupable. Si j'enlève la fonction nl2br à $message, je n'ai plus de />. Mais, le saut de ligne ne s'effectue plus.


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Re: Regex pour transformer les URL en lien cliquable

Message le Mar Oct 12, 2010 23:09

C'est bon, j'ai réglé le problème. Il venait bien du nl2br.

Dans le futur, si y'en a qui ont le même soucis. Il suffit de supprimer le nl2br et de prendre une fonction.
J'ai utilisé
Code: Tout sélectionner
function mynl2br($text) {
   return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />'));
}


Que l'on retrouve ici
http://php.net/manual/fr/function.nl2br.php


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. 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 :

Consultez la description détaillée des produits ou services de Google suivants : Le raccourcisseur d'URL youtu.be

  • Transformer des citations en liens
    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).
  • Tester le 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 backlinks vers 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.
  • Calcul du nombre de backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.


Qui est en ligne

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