Page 1 sur 1

Regex pour changer URL

Posté : 24 mars 2010, 19:01
par JeanJean
Bonjour,

Voilà, j'ai une variable $contenu qui contient le texte rédigé par le membre. Dedans figure des url. J'aimerais que ces url par exemple www.google.fr soit automatiquement transformé en <a href="www.google.fr">www.google.fr</a>

Voilà le code :
<?php
	$test = 'oikrhjoirehjphj www.google.fr ojprohjj www.siteduzero.com';	
	
	echo 'Ancien :<br />'.$test;
	echo '<br /><br />Nouveau :<br />'.preg_replace('#www.[a-zA-Z.]+#', '<a href="http://$0" class="url" style="color:red;">$0</a>', $test);
?>
Cependant, quand l'url contient un - par exemple www.google-test.fr là ca ne fonctionne plus. :/

Si quelqu'un sait comment régler le problème. :)

Re: Regex pour changer URL

Posté : 24 mars 2010, 23:52
par JeanJean
J'ai trouvé une solution pour les tirets :

$contenu = preg_replace('#www.[a-zA-Z+-.]+#', '<a href="http://$0" class="url">http://$0</a>', $contenu);

Sauf que maintenant, il me faut les / en plus. Donc j'ai pensé rajouter +/ avec le -. Ca marche, les / sont reconnus, mais plus les tirets.

Je fais comment pour mettre deux + à la suite ?

Re: Regex pour changer URL

Posté : 26 mars 2010, 19:24
par JeanJean
Problème résolu => $contenu = preg_replace('#www.[a-zA-Z\-\/.]+#', '<a href="http://$0" class="url">http://$0</a>', $contenu);

Re: Regex pour changer URL

Posté : 26 mars 2010, 21:08
par Dr@ke
tu peux aussi tester cette reg :) :

Code : Tout sélectionner

'#www\.[a-zA-Z0-9]+([-.][a-zA-Z0-9]+)*\.[a-zA-Z]{2,4}(\/\w+(-\w+)?\/)*(\/)?#'
(Mais elle ne gère pas non plus les query strings)