Remplacer les URL par des liens <a> dans du texte

Février 2013

En PHP il est très facile de convertir toutes les URL présentes dans du code HTML (chaine de caractère) par des liens hypertexte cliquable, en utilisant les expressions régulières.

Le but du jeu est de matcher les URL qui ne sont pas déjà incluses dans un tag <a> (soit dans l'ancre, soit dans un attribut).

Voilà cette expression régulière : ([^>"])(https?://[a-z0-9\./+,%#_-]+).

On pourrait m'améliorer en utilisant les références arrière (lookbehind) mais ça ne marche pas avec PHP qui ne supporte pas les lookbehind avec une largeur variable (erreur Compilation failed: lookbehind assertion is not fixed length) : (?<!(href="|>))(https?://[a-z0-9\./+,%#_-]+).

Dans un tout autre contexte, cet article est très intéressant : comment créer un plugin excel avec vsto ?.

Voilà donc le code PHP pour convertir les URL en lien cliquable :

<?php
$text = preg_replace('@([^>"])(https?://[a-z0-9\./+,%#_-]+)@i', '$1<a href="$2">$2</a>', $text);
?>

Découvrez ce tutoriel photoshop : texte or & diamant à lire tout de suite !

2 commentaires :
commentaire n°3014 par flog6
flog6 samedi 28 février 2015, 15:50
Merci, je n'avais pas pensé aux expressions régulières pour faire ce type de choses.
En effet, c'est très pratique et efficace !
commentaire n°3156 par talal
talal vendredi 18 septembre 2015, 19:23
ça marche mais ça ne convertit pas tout les types de liens :/. Pouvez vous proposez une autre solution
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré