PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-04-2010 04:26:46

jojaba
Membre
Lieu : Obersoultzbach - Alsace
Inscription : 05-10-2009
Messages : 16
Site Web

Convertir url en lien cliquable [php - expressions rationnelles]

Bonjour,
Je sais qu'on trouve énormément de ressources sur le Web à ce sujet. Cependant, après avoir opté pour une solution qui me convenait, je me bute à un problème de mise en forme d'expression régulière. Explications...
Voici le code que j'utilise (en m'inspirant donc de la page vers laquelle pointe mon lien plus haut) :

function pxUrlToLink($commenttext) {
//motifs à repérer
  $in = array(
    '`((?:https?|ftp)://\\S+)`',
    '`;\)`'
    );
//remplacement des chaînes correspondant aux motifs
  $out = array(  
    '<a href="$1" title="$1">$1</a>',
    '<img src="xmedia/emoticones/clin_d_oeil.gif" alt="Clin d\'oeil" />'
  );
 // Exécution de l'expression régulière et envoi du texte formaté
 $commenttext = preg_replace($in, $out, $commenttext);  
 return $commenttext;
}

Les url sont bien remplacées par le lien mais, lorsqu'elles sont suivies d'une virgule ou d'un point également (puisque le motif repère les chaînes commençant par http, https et ftp et comportant une chaîne sans espaces) ! J'ai donc essayé d'arranger le motif permettant de reconnaître les url en ajoutant le fait qu'il ne faut pas prendre en compte une virgule, un point (éventuellement, j'ajouterai une parenthèse fermante, un crochet fermant, un point-virgule) qui se trouvent à la fin de l'expression capturée. J'ai tenté ça :

((?:https?|ftp)://\\S+[^,.])

Mais bien évidemment, cela ne fonctionne pas (d'ailleurs je ne sais pas trop pourquoi hmm) ! J'ai passé une semaine à essayer de trouver la solution, mais rien n'y fait, je sèche lamentablement.
Une idée, une piste ou mieux une solution ?


Merci d'avance smile

Dernière modification par jojaba (20-04-2010 04:27:22)


Plume CMS - Le système de gestion de contenu léger et puissant !
Localiser des extensions Mozilla sur BabelZilla
FluxBB, les forums tout en simplicité et en puissance !

Hors ligne

#2 20-04-2010 08:25:10

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Convertir url en lien cliquable [php - expressions rationnelles]

Bonjour,

Quelle partie délicate tu abordes!
Je te conseille vivement d'aller jeter un coup d'oeil ici http://www.expreg.com/ et/ou ici http://lumadis.be/regex/tuto_pcre.php#gourmand
Tu devrais pouvoir y  trouver ton bonheur.

Dernière modification par Jc (20-04-2010 08:51:03)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 20-04-2010 20:58:49

jojaba
Membre
Lieu : Obersoultzbach - Alsace
Inscription : 05-10-2009
Messages : 16
Site Web

Re : Convertir url en lien cliquable [php - expressions rationnelles]

Merci Jc pour ces ressources (je connaissais la première mais la seconde m'a l'air pas mal du tout également). smile
Je sais que ça ne se fait pas, mais j'avais posé la même question sur plusieurs forums. C'est sur les forums d'Alsacréation que j'ai obtenu une réponse qui semble bien fonctionner : http://forum.alsacreations.com/topic-20 … egexp.html
Ça pourra peut-être utile à d'autres... wink


Plume CMS - Le système de gestion de contenu léger et puissant !
Localiser des extensions Mozilla sur BabelZilla
FluxBB, les forums tout en simplicité et en puissance !

Hors ligne

#4 20-04-2010 21:23:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Convertir url en lien cliquable [php - expressions rationnelles]

Sacré jojaba^^
Merci en tout cas pour ton retour, et content que ton problème soit résolu smile


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 21-04-2010 16:57:43

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Convertir url en lien cliquable [php - expressions rationnelles]

jojaba a écrit :

Je sais que ça ne se fait pas, mais j'avais posé la même question sur plusieurs forums.

Tout se fait si c'est bien fait ! Et puis, en postant la réponse, tu participes à l'échange wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

Pied de page des forums