Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2007, 14h58   #1
Membre à l'essai
 
Inscription : octobre 2005
Messages : 122
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 122
Points : 24
Points : 24
Par défaut Règle de remplacement d'une URL

Bonjour,

Sur un forum, je cherche à faire en sorte que lorsqu'un membre tape une adresse commençant par "http://", celle-ci se transforme automatiquement en lien.

J'ai déjà cette ligne de code qui remplace le lien si le membre le met entre [ url ] et [/ url ] :

Code :
$output = preg_replace('/\[url\]([^]]*)\[\/url\]/e', "'<a href=\"\\1\" target=\"_blank\" title=\"Ce lien s\'ouvre dans une nouvelle fenêtre\" class=\"liens_forum\">'.Tronquer_Texte('\\1',50).'</a>'", $chaine);
Pour remplacer automatiquement le lien si le membre n'utilise pas les balises [ url ] et [/ url ], je suppose qu'il faut détecter la présence de "http://" et considérer comme lien tout ce qui vient après "http://" tant qu'il n'y a pas d'espace.

En suivant le modèle que je vous ai copié/collé plus haut, pourriez-vous m'indiquer la syntaxe qui me permettrait de remplacer une chaine de caractère commençant par "http://" par un lien ?

Merci d'avance pour ce coup de main
__________________
http://www.studiz.fr/
Emotion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 15h05   #2
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Code :
(http|ftp|https|ftps)://[^ \?&=\#\"\n\r\t<]*?)
essaye ça...
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 17h41   #3
Membre à l'essai
 
Inscription : octobre 2005
Messages : 122
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 122
Points : 24
Points : 24
Ca ne va pas ;-)

J'avais précisé aussi "en suivant mon modèle". Je pensais que le rendu serait quelque chose de ce type :

Code :
$output = preg_replace('http://([^]]*)', "'<a href=\"http://\\1\" target=\"_blank\" title=\"Ce lien s\'ouvre dans une nouvelle fenêtre\" class=\"liens_forum\">'.Tronquer_Texte('http://\\1',50).'</a>'", $chaine);
Sauf qu'à mon avis, ma syntaxe est mauvaise...
__________________
http://www.studiz.fr/
Emotion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 20h25   #4
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
enleves les parenthese de mon exemple !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 14h42   #5
Membre à l'essai
 
Inscription : octobre 2005
Messages : 122
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 122
Points : 24
Points : 24
Ok, mais concrètement la syntaxe complète donne quoi ? (je débute dans le regex, ce qui est évident pour toi ne l'est pas pour moi...)

Code :
$output = preg_replace('http|ftp|https|ftps://[^ \?&=\#\"\n\r\t<]*?', "'<a href=\"\\1\" target=\"_blank\" title=\"Ce lien s\'ouvre dans une nouvelle fenêtre\" class=\"liens_forum\">'.Tronquer_Texte('\\1',50).'</a>'", $chaine);
Ca ne marche pas... Et mieux ça affiche une erreur :

Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in [etc.]
__________________
http://www.studiz.fr/
Emotion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h34.


 
 
 
 
Partenaires

Hébergement Web