REGEX : interdire un mot
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
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 :
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 !
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 !
A voir également:
- Regex mot entier
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Voir mot de passe wifi android - Guide
2 réponses
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);
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.
Si j'écris "http://www.truc.fr/page.php. Blabla..."
Le lien sera "http://www.truc.fr/page.php." avec le point donc.
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.
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.