Lien automatique sur URL valide

Lien automatique sur URL valide - PHP - Programmation

Marsh Posté le 03-02-2011 à 10:31:48    

Bonjour à tous !
 
J'ai un petit petit site perso dans lequel les utilisateurs peuvent poster rapidement une news (un peu à la manière twitter).
Ce que j'aimerai simplement faire, c'est que quand j'affiche le contenu d'un ticket, les URL soient détectées automatiquement et soient affichées sous forme de liens cliquables. (http://un.exemple.com)
 
Quelle serait la solution pour résoudre ce problème ?
 
Merci d'avance  :hello:

Reply

Marsh Posté le 03-02-2011 à 10:31:48   

Reply

Marsh Posté le 03-02-2011 à 12:27:43    

Il faut analyser les données de l'utilisateur et encapsuler les URL dans des <a href...>...</a>.
 
Ce n'est pas super facile à faire, c'est vrai, mais c'est faisable, sauf si vous êtes prisonnier d'un système fermé.

Reply

Marsh Posté le 03-02-2011 à 13:54:24    

Il y a plusieurs solutions :  
- Regexp coté serveur qui parse la news avant de la stocker
- Regexp coté serveur qui parse la news avant de l'afficher
- décorateur javascript coté client à coup de Regexp
 
A toi de voir selon tes compétences et tes contraintes techniques.

Reply

Marsh Posté le 03-02-2011 à 14:39:22    

Ok merci de vos réponses  :)  
 
Je pense que je vais me tourner vers la 2ème option... ça me fera bosser les regexp !
 

Reply

Marsh Posté le 04-02-2011 à 15:13:38    

Bon pour ceux que ça interesse, voila ce que j'ai trouvé
 

Code :
  1. function clicklien($url){
  2.   $in=array(
  3.   '`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
  4.   '`((?<!//)(www\.\S+[[:alnum:]]/?))`si'
  5.   );
  6.   $out=array(
  7.   '<a href="$1">$1</a>',
  8.   '<a href="http://$1">$1</a>'
  9.   );
  10.   return preg_replace($in,$out,$url);
  11. }


 
J'en ai essayé un bon paquet, et c'est celle qui traite le plus de cas possibles  ;)  
 
(trouvée ici http://www.expreg.com/lire-URL-source)
 
voila!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed