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 18/10/2011, 13h02   #1
Responsable Portail
 
Avatar de khayyam90
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2004
Messages : 7 410
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2004
Messages : 7 410
Points : 10 547
Points : 10 547
Par défaut Remplacement d'URLs par des URLs cliquables

Bonjour,

Aujourd'hui je passe vous voir pour un problème de remplacement par expression régulière.

Dans une chaîne de caractères je cherche à remplacer les urls par des balises <a> pour rendre ces urls cliquables. Jusque là ce n'est pas trop difficile, seulement ma chaine de caractères en entrée contient certaines urls qui sont déjà entourées de la balise <a>, celles-ci ne sont donc plus à remplacer.

Voilà un exemple de la chaîne d'entrée :
Code php :
1
2
$in = "lorem ipsum ";
$in.= "\nhttp://www.google.fr<p>http://www.google.com/index.php?t=yA1&e=2</p> <a href=\"http://www.google.com?f=5B2&e=5\">lien</a> lorem ipsum http://www.google.com ";

Les 2 premiers liens doivent être remplacés, ainsi que le dernier

Pour l'instant voilà ce que j'ai essayé :
Code php :
echo preg_replace("/((mailto|https?):\/\/[^<>\"'\s]+)/ims", '<a href="$1">$1</a>', $in);

mais le résultat n'est pas tout à fait correct : le troisième lien est mal remplacé. Voilà le résultat
Code :
1
2
lorem ipsum 
<a href="http://www.google.fr">http://www.google.fr</a><p><a href="http://www.google.com/index.php?t=yA1&e=2">http://www.google.com/index.php?t=yA1&e=2</a></p><a href="<a href="http://www.google.com?f=5B2&e=5">http://www.google.com?f=5B2&e=5</a>">lien</a> lorem ipsum <a href="http://www.google.com">http://www.google.com</a>
Quelle serait la bonne expression régulière ? Une idée ?
__________________
Responsable du Portail Developpez. A la recherche d'un poste sur Strasbourg.
Mes tutoriels Algo, Web, C++, PHP - Mon CV
khayyam90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 19h29   #2
Responsable Portail
 
Avatar de khayyam90
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2004
Messages : 7 410
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2004
Messages : 7 410
Points : 10 547
Points : 10 547
Bon, je m'en suis sorti

Code php :
preg_replace("#((?<!href=[\"'])(mailto|https?)://[^<>\"'\s]+)#ims", '<a href="$1">$1</a>', $in);
__________________
Responsable du Portail Developpez. A la recherche d'un poste sur Strasbourg.
Mes tutoriels Algo, Web, C++, PHP - Mon CV
khayyam90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h26.


 
 
 
 
Partenaires

Hébergement Web