Accueil > Tutoriels pour Webmasters > Transformer les URL en liens

Transformer les URL en liens

Certains sites web autorisent les internautes à rédiger du contenu. Dès lors, ceux-ci peuvent écrire l'adresse d'une page web dans le contenu mais en oubliant de les rendre "cliquable". L'objectif de ce tutoriel est de fournir un code HTML qui transforme automatiquement les URL d'une page en des lien hypertextes qui sont directement cliquable.

Prérequis

Il est nécessaire d'avoir des petites notions de PHP pour comprendre où et comment placer le code qui va suivre. Par ailleurs, il convient de savoir que la balise HTML <a> est une balise de lien.

Code PHP

Le code PHP ci-dessous considère que le contenu textuel dans lequel doit être transformer les URL est présent dans la variable $message. Par ailleurs, sachant que ce contenu peut avoir des caractères spéciaux (tel des caractères accentués), il est préférable d'utiliser la fonction htmlentities() avant d'utiliser preg_replace().

  1. <?php
  2. // La variable $message doit contenir du contenu textuel (avec ou sans des URL).
  3. // Ligne recommandée pour convertir les caractères spéciaux en entités HTML
  4. $message = htmlentities($message);
  5. // Tout ce qui ressemblera à une URL sera inclus entre des balises <a href=""> et </a>.
  6.  
  7. $message = preg_replace(
  8. '#^(http|https|mailto|ftp)://(([a-z0-9\/\.\?-_=#@:~])*)#i',
  9. '<a href="$1://$2">$1://$2</a>',
  10. $message
  11. );
  12. ?>

Il ne faut pas perdre de vue que ce code n'est pas parfait. Voici quelques points négatifs lié à l'utilisation de ce code:

  • Certains utilisateurs écrivent une URL sans vouloir qu'elle soit cliquable (cf. l'adresse http://www.example.com sert juste d'exemple)
  • Le résultat issue de ce code n'est pas toujours celui souhaité. Par exemple, s'il y a un point d'exclamation dans l'URL, est-ce que ça doit considéré comme la fin d'une phrase ou est-ce considéré comme un caractère inclus dans l'URL?
  • Les URL qui commence par "www" ne seront pas transformées