REGEX : interdire un mot

Fermé
Utilisateur anonyme - 29 févr. 2012 à 17:54
 Utilisateur anonyme - 29 févr. 2012 à 22:15
Bonjour à tous !

Alors voilà, je vous explique mon problème. Sur un site, j'enregistre dans ma DB des articles dans lesquels je mets des liens.
Lors de l'affichage de l'article, j'affiche ces liens en mettant des balises <a href="..."> </a> autour automatiquement grâce à la regex suivante :

$donnees['contenu'] = preg_replace("#(https?://[^ \)<]+)#i", "<a href=\"$1\" target=\"_blank\">$1</a>", $donnees['contenu']); // REND LES LIENS CLIQUABLES



Si par exemple j'ai un lien entre parenthèse, ca fonctionne, la parenthèse finale n'est pas dans le lien.
Ex : (http://www.truc.fr) devient <a href="https://www.truc.fr/">http://www.truc.fr</a>

Mais si, par contre, j'ai https://www.truc.fr/
Et bien le point final sera pris en compte dans le lien.

Ma question est : comment faire pour, en regex, ne pas selectionner le point et l'espace ? J'ai bien tenté de mettre ^(\. ) mais bien sûr, ça ne marche pas.

Merci de votre aide !

2 réponses

Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
29 févr. 2012 à 18:02
bonjour essaie ça :

substr(preg_replace("#([\r\n\t ]+)((https?|ftp)://(((w{3}\.)?)([\w-\.]+)\.([a-z]{2,4})((/([\w%/.\.\#\+;\&\:?=-]+))?)))#",'$1<a href="$2">$2</a>',' '.$string),1);
0
Utilisateur anonyme
29 févr. 2012 à 18:08
Merci mais ne fonctionne pas totalement.

Si j'écris "http://www.truc.fr/page.php. Blabla..."
Le lien sera "http://www.truc.fr/page.php." avec le point donc.
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
Modifié par Atropa le 29/02/2012 à 19:26
ce n'est pas bien grave... et normal a la fois il est possible qu'une url se termine par un . de plus sa ne gène pas au fonctionnement du lien
0
Utilisateur anonyme
29 févr. 2012 à 22:15
Ce n'est pas moi qui poste tous les articles sur mon site, parfois il s'agit d'utilisateurs lambda qui rajoutent des points à la fin du lien comme pour clore une phrase.

Il est possible qu'une URL se termine par un point mais c'est extrêmement rare.
Et si, ça gène au fonctionnement du lien. Beaucoup de sites renvoient un 404 si je rajoute un point à la fin du lien d'une de leur page (j'ai vérifié).

Donc j'aimerais ne pas selectionner ce dernier point.
0