[RegExp] Détecter toutes les adresses URL d'une chaîne de caractères

Détecter toutes les adresses URL d'une chaîne de caractères [RegExp] - PHP - Programmation

Marsh Posté le 08-06-2006 à 22:34:44    

Bonjour,
 
Je souhaite récupérer dans un tableau l'ensemble des adresses URL contenues dans une chaîne de caractères. Ces adresses peuvent être contenues dans des balises html <a> ou bien être écrites directement.
 
Pour que vous compreniez de suite pourquoi je cherche à faire ça, voici un exemple typique de chaîne de caractère que je souhaite traiter :
 

Webmaster, your site is secure confidential and quick. Great job!
<br/>
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/index.html\"&gt;cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/buy-cialis.html\"&gt;buy cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/generic-cialis.html\"&gt;generic cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cheapest-cialis.html\"&gt;cheapest cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cheap-cialis.html\"&gt;cheap cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/order-cialis.html\"&gt;order cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-drug.html\"&gt;cialis drug&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/discount-cialis.html\"&gt;discount cialis&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-soft-tabs.html\"&gt;cialis soft tabs&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/buy-cialis-online.html\"&gt;buy cialis online&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-online.html\"&gt;cialis online&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-no-prescription.html\"&gt;cialis no prescription&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-samples.html\"&gt;cialis samples&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-pill.html\"&gt;cialis pill&lt;/a&gt;
<br/>&lt;a href=\"http://vrachirulyat.mpage.jp/cialis-dosage.html\"&gt;cialis dosage&lt;/a&gt;
<br/>http://vrachirulyat.mpage.jp/index.html
<br/>http://vrachirulyat.mpage.jp/buy-cialis.html
<br/>http://vrachirulyat.mpage.jp/generic-cialis.html
<br/>http://vrachirulyat.mpage.jp/cheapest-cialis.html
<br/>http://vrachirulyat.mpage.jp/cheap-cialis.html
<br/>http://vrachirulyat.mpage.jp/order-cialis.html


 
J'ai pour le moment trouvé un bout de code qui est le suivant :
 

$pattern ='`(http|https)://(.*)(\"|\s)`';
 @preg_match_all ($pattern, $texte, $result);
 
 $alpha = $result[0];
 
 $count_alpha = @count($alpha);
 
 $liste="";
 for ($a = 0; $a <= $count_alpha-1; $a++)
  $liste=$liste."\r\n".$alpha[$a].", ";


 
Mais le code ne fonctionne pas et je ne suis pas hyper calé en regexp.
 
Des pistes ?
 
Merci :)

Reply

Marsh Posté le 08-06-2006 à 22:34:44   

Reply

Marsh Posté le 08-06-2006 à 22:43:14    

Pour l'exemple que tu fournis  

Code :
  1. #(https?://(?:\w|[/.-])*)#


devrais suffire comme pattern au preg_match_all

Reply

Marsh Posté le 08-06-2006 à 22:44:50    

meme que :

Code :
  1. #https?://(?:\w|[/.-])*#


est encore mieux :) ...

Reply

Marsh Posté le 08-06-2006 à 22:49:43    

waw, super efficace :)
 
Merci pour le pattern, je vais essayer de comprendre comment il fonctionne.
 
Bonne soirée :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed