PHP

Comment détecter une URL dans un message

Résolu

Bonjour, j'aimerai savoir comment reconnaitre une URL dans un message.

Par exemple si j'écris http://www.google.com, que cela reconnaisse que c'est une URL.

Merci.

343 vues
14 janvier 2024 à 2:29
Cette pub permet au site de vivre ...

Hello @Scarface,


Pour détecter une URL dans un message, il existe plusieurs possibilités. Mon collègue @Space001t'as parlé des expressions régulières, mais sache que tu peux aussi utiliser FILTER_VALIDATE_URL de PHP (voir la documentation sur les filtres de validation)


Et donc, tu peux faire comme ça :


<?php
$textWithLinks = 'Salut ! Check ça : https://www.google.fr';
$text = strip_tags($textWithLinks);


function displayTextWithLinks($s) {
  $words = explode(" ", $s);
  foreach ($words as &$word) {
    if (filter_var($word, FILTER_VALIDATE_URL)) {
      $word = '<a href="' . $word . '">' . $word . '</a>';
    }
  }
  return implode(" ", $words);
}


$text = displayTextWithLinks($text);
echo $text;
?>


Tu peux tester directement le code sur PHPTester.

En espérant que nos 2 solutions répondent à ta question 😉

Cette pub permet au site de vivre ...

2 commentaires

Hello @Scarface,


Pour détecter une URL dans un message, il existe plusieurs possibilités. Mon collègue @Space001t'as parlé des expressions régulières, mais sache que tu peux aussi utiliser FILTER_VALIDATE_URL de PHP (voir la documentation sur les filtres de validation)


Et donc, tu peux faire comme ça :


<?php
$textWithLinks = 'Salut ! Check ça : https://www.google.fr';
$text = strip_tags($textWithLinks);


function displayTextWithLinks($s) {
  $words = explode(" ", $s);
  foreach ($words as &$word) {
    if (filter_var($word, FILTER_VALIDATE_URL)) {
      $word = '<a href="' . $word . '">' . $word . '</a>';
    }
  }
  return implode(" ", $words);
}


$text = displayTextWithLinks($text);
echo $text;
?>


Tu peux tester directement le code sur PHPTester.

En espérant que nos 2 solutions répondent à ta question 😉

Bonjour @Scarface,


Bienvenue sur Sitedudev 😎


Pour détecter une URL en PHP, tu peux utiliser des expressions régulières (regex).


Voici un exemple simple pour t'aider :


<?php

$message = "voici un lien intéressant : http://www.google.com. J'espère que ça t'aide !";

// Utilise une expression régulière pour détecter les URLs
$pattern = '/\b(?:https?|ftp):\/\/\S+/i';

// Recherche les correspondances dans le message
preg_match_all($pattern, $message, $matches);

// Affiche les URLs détectées
if (!empty($matches[0])) {
   echo "URLs détectées : ";
   foreach ($matches[0] as $url) {
       echo $url . " ";
   }
} else {
   echo "Aucune URL détectée.";
}

?>


N'oublie pas d'adapter le code en fonction de tes besoins spécifiques 😉


En espérant avoir pu t'aider 😁

A très vite !

Cette pub permet au site de vivre ...