Page 1 sur 1

Extraire lien d'un texte

Posté : 30 déc. 2005, 00:39
par Elie
Bonjour,

Je voudrais savoir comme isoler le lien se trouvant dans un texte.

Actuellement j'utilise un script pour le remplacer dans un texte par un lien cliquable.

Cette fois ci je voudrais juste extraire le lien pour l'attribuer à une release :)

Merci de me dire vers ou me diriger !

Elie

Posté : 30 déc. 2005, 01:04
par Cyrano
Je saisis mal, mais à priori, il faut te tourner vers les expressions régulières et preg_match() en particulier

Posté : 30 déc. 2005, 01:18
par Elie
En fait je voudrais juste extraire le lien de cette chaine !

"coucou http://site.com?var=truc&machin=Kool plouf";

Je voudrais que que $link = "http://site.com?var=truc&machin=Kool";

Posté : 30 déc. 2005, 01:31
par Truc
il y a peut-être de l'idée par ici

Posté : 30 déc. 2005, 01:36
par Cyrano
Tiens, essaye sur cette base :
<?php
$chaine = "coucou http://www.site.com?var=truc&machin=Kool plouf";
$masque = "#(?:(?:(?:https?|ftp)://)?(?:www\.)?\w+(?:/\w+)*\.\w{2,4})(?:\?\w+=\w+(?:\&\w+=\w+)*)?#i";
preg_match($masque, $chaine, $sortie);
?>
<pre>
<?php
print_r($sortie);
?>
</pre>

Posté : 30 déc. 2005, 01:56
par Elie
Merci cyrano :)

En imaginant qu'il y ai plusieurs liens, de structure differents... :)

Ca marche aussi ?

$chaine = "coucou http://www.site.com?var=truc&machin=Kool plouf f http://www.caca.fr ffff http://elie.najberg.fr fffffff";

Posté : 30 déc. 2005, 12:20
par Cyrano
Avec une petite modification et une correction dans l'expression, oui :
<?php
$chaine = "coucou http://www.site.com?var=truc&machin=Kool plouf f http://www.caca.fr ffff http://elie.najberg.fr fffffff";
$masque = "#(?:(?:(?:https?|ftp)://)?(?:www\.)?\w+(?:(?:/|\.)\w+)*\.\w{2,4})(?:\?\w+=\w+(?:\&\w+=\w+)*)?#i";
preg_match_all($masque, $chaine, $sortie);
?>
<pre>
<?php
print_r($sortie);
?>
</pre>
Va afficher:

Code : Tout sélectionner

Array ( [0] => Array ( [0] => http://www.site.com?var=truc&machin=Kool [1] => http://www.caca.fr [2] => http://elie.najberg.fr ) )

Posté : 30 déc. 2005, 14:21
par Elie
Merci Mr Cyrano !

Vous restez mon modele absolu !