Distinguer un lien http:// dans une variable

WRInaute discret
Bonjour, j'essaie de trouver comment distinguer un lien http://www.... dans une variable qui contient un message global...
Ex : j'ai un texte de 10 lignes, et je scanne le tout que je place dans un buffer et i est une ligne.
Je fais une boucle sur le nombre de ligne, pour trouver une séquence http://...
j'ai pensé à quelque chose comme ça je sais c'est pas abouti :

Code:
$buffer[$i]=str_replace("http://","<a href='http://'>http://",$buffer[$i]);
Je vois pas comment distinguer, car je n'ai pas de balise url avant comme en bbcode
Code:
[url]http://....[/url]
, donc pas facile de trouver la séquence.

Merci.
 
WRInaute discret
à mon avis, jette un coup d'oeil sur les expressions régulières. c'est un peu imbuvable au début, mais y'a rien de plus efficace ;)
 
WRInaute discret
cedsib a dit:
à mon avis, jette un coup d'oeil sur les expressions régulières. c'est un peu imbuvable au début, mais y'a rien de plus efficace ;)
J'ai regardé ereg mais je comprends pas tout bien, si c'était un code comme du bbcode, j'utiliserais ceci :
Code:
$buffer=preg_replace('/\[url=(http:\/\/|)(.+)\](.+)\[\/url\]/', '<a href="http://\\2">\\3</a>', $buffer);
Mais sans délimiteur...j'avais pensé à tester le caractère espace, mais pas la syntaxe.
 
WRInaute occasionnel
Et quelque chose comme ça ?
Code:
$str = ereg_replace('^(http://|https://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$', '[filtre]', $str);
Remplace un lien par "[filtre]" après ... ça doit pouvoir s'adapter pour ton cas.
 
WRInaute discret
magic corp. a dit:
Et quelque chose comme ça ?
Code:
$str = ereg_replace('^(http://|https://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$', '[filtre]', $str);
Remplace un lien par "[filtre]" après ... ça doit pouvoir s'adapter pour ton cas.
En utilisant cette expression dans mes recherches je suis tombé sur un site qui donnait l'expression et ça fonctionne, merci.
Code:
$buffer[$i] = ereg_replace("(http://)(([[:punct:]]|[[:alnum:]])*)","<a href="\\0">\\2</a>",$buffer[$i]);
 
Discussions similaires
Haut