Comment remplacer une URL par un lien en PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2022-01-31 12:12:56
Thèmes : php - lien
Question

Bonjour, je cherche le moyen, en PHP, de remplacer une URL présente dans un texte, par un lien du type <a href="">. J'aimerais également pouvoir dans certains cas ajouter, ou pas, les options target et rel ; merci.

Réponse

Pour remplacer une URL par un lien en PHP, avec la gestion des options target, rel, title, ou autres, vous pouvez créer une fonction PHP comme celle-ci :

<?php
function autoLien($url, $param=array()) {
  $params = "";
  foreach ($param as $option => $valeur) {
    $params .= " {$option}=\"{$valeur}\"";
  }
  $url = " " . $url;
  $url = preg_replace('#([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])#i', '$1<a href="$2"'.$params.'>$2</a>', $url);
  $url = substr($url, 1);
  return $url;
}

$url = autoLien("https://www.collaborativejob.com", array("target"=>"_blank", "rel"=>"dofollow", "title"=>"1FORMATIK.com"));
echo $url;
?>

Remarque : le premier argument de la fonction autoLien() est l'URL à remplacer par le lien HTML, et le second est un array dans lequel vous passez l'ensemble des options et paramètres de la balise HTML <a>.

La fonction identifie chacun des paramètres passés dans le tableau via une boucle foreach puis remplace l'URL par un lien avec la fonction PHP preg_replace.