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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?