Expression régulière pour raccourcir une url !


Tdv
WRInaute discret
WRInaute discret
 
Messages: 128
Inscription: 10 Mai 2006

Expression régulière pour raccourcir une url !

Message le Lun Déc 18, 2006 14:21

Bonjour à tous...

J'utilise une expression régulière dans mon code PHP pour repérer les url automatiquement et les transformer en liens... (fait maison, donc pas forcément optimisé), mais je voudrais maintenant que les liens trop longs, dépassant tant de caractères soient raccourcis à l'affichage en séparant le début et la fin par "..." ! Or par exemple la fonction substr() ne marche pas sur le \3 ...

Voici l'expression actuelle :

$text = preg_replace("#([\n ])?([hftp]+)://([a-z0-9-=_%\#$~%&;?./]+)#i", '\1<a href="\2://\3" target="_blank">\2://\3</a>', $text);


Si quelqu'un a une idée, je suis preneur, merci d'avance :)

billyboylindien
WRInaute impliqué
WRInaute impliqué
 
Messages: 578
Inscription: 28 Fév 2005

Message le Lun Déc 18, 2006 14:29

Au pire recupere/etudie la fonction sur un forum comme punbb ou phpbb.

++


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Lun Déc 18, 2006 14:34

Et pourquoi tu remplaces pas simplement par "Lien >" ou "en savoir plus" ou ce genre de trucs ?


david96
WRInaute passionné
WRInaute passionné
 
Messages: 1430
Inscription: 28 Aoû 2005

Re: Expression régulière pour raccourcir une url !

Message le Mar Déc 19, 2006 11:12

Tdv a écrit:Bonjour à tous...

J'utilise une expression régulière dans mon code PHP pour repérer les url automatiquement et les transformer en liens... (fait maison, donc pas forcément optimisé), mais je voudrais maintenant que les liens trop longs, dépassant tant de caractères soient raccourcis à l'affichage en séparant le début et la fin par "..." ! Or par exemple la fonction substr() ne marche pas sur le \3 ...

Voici l'expression actuelle :

$text = preg_replace("#([\n ])?([hftp]+)://([a-z0-9-=_%\#$~%&;?./]+)#i", '\1<a href="\2://\3" target="_blank">\2://\3</a>', $text);
Si quelqu'un a une idée, je suis preneur, merci d'avance :)

Code: Tout sélectionner
function limitText($text,$limit="30")
{
   if(strlen($text)>=$limit)
   {
      $text=substr($texte,0,$limit);
      $repere=strrpos($text,"-");
      $text=substr($text,0,$repere)."...";
   }
   return $text;
}


ça devrait le faire je pense :-D
a voir quelle signe prendre pour strrpos par contre, pour marquer la position à partir de laquelle l'url va être tronquée :?


Tdv
WRInaute discret
WRInaute discret
 
Messages: 128
Inscription: 10 Mai 2006

Pas si simple ;)

Message le Mar Déc 19, 2006 20:30

Merci pour vos réponses... en effet je pourrais simplement remplacer par "lien" .. mais bon, dommage pour les liens courts qui pourraient apparaitre tels quels...

Et je crains que ce soit un peu plus compliqué que cela... mon $text peut contenir tout un article et plusieurs liens dedans ! Donc mon expression régulière repère les liens et les traite ensuite... Mais les mots peuvent être de toutes tailles et il n'y a bien que les liens qui doivent être raccourcis... Au pire je traite l'article mot à mot et je raccourcis les mots trop longs, liens ou non... mais bon, ça me parait du temps processeur pour pas grand chose... :/


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

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité