Php - Extraire un lien d'une chaîne de caractères

ARCHIVE
Le Code PHP :
<?php function get_link($str){ $str=strip_tags($str); $nlk = explode(' ', $str); foreach($nlk as $element){ if(eregi('http://', $element))return $element; } return false; } ?>
Explications : En fait, nous allons partir du constat que les liens débutent par http:// , et que, dans notre langue du moins (si vous en connaissez où ce n'est pas le cas dîtes le moi, ça m'instruira  ^), les mots sont séparés par des espaces. Nous allons donc faire un explode sur les espaces, via : $nlk = explode(' ', $str); Cela nous retournera un tableau ($nlk), dont les entrées correspondent à tous les mots. Ensuite, nous allons parcourir ce tableau avec une simple boucle foreach foreach($nlk as $element){ Pour chaque $element (et donc, mot), nous allons vérifier si $element contient notre fameux http:// if(eregi('http://', $element))return $element;   Si jamais l'expression ne contient pas de lien, on retourne false : return false;   Utilisation : $lien = get_link("Visitez le site http://gregoire-penverne.fr"); Cela vous retournera http://gregoire-penverne.fr ^^   Extrapolons un peu ... Cette fonction me sert tous les jours, plusieurs dizaines de fois par jour même. Quand je poste une actualité sur mon site, j'en extrais le lien et utilise la fonction fournie par ilik.it afin de le raccourcir ^ Après, libre à vous d'utiliser bit.ly pout raccourcir, ou faire ce que vous voulez avec votre superbe fonction get_link ...   Edit du 25/11/2010 : Pour obtenir un tableau contenant les liens d'une chaine en utilisant preg_replace, on ferait :
<?php function extract_links($str){ $str=preg_replace("/(\r\n|\n|\r)/", " ", $str); $pattern = "!http://(.*) !Ui"; preg_match_all($pattern, $str, $out); $lk=array(); foreach($out[0] as $lk_array){ $lk[] = $lk_array; } return $lk; } ?>
Une question? Une remarque? Un avis? Twittons-en!

When you click on links to various merchants on this site and make a purchase, this can result in this site earning a commission.
Affiliate programs and affiliations include, but are not limited to, the eBay Partner Network and Amazon.