Je viens de récupérer un regex qui me permet de transformer plus sortes de liens afin qu'ils soient cliquables. Mais j'ai un gros souci.
<?php
$texte = 'Bonjour ou bonsoir à toutes et tous,
Vous souhaitez rendre cliquable une ou des urls placées au
travers de vos textes comme celle-ci www.monsite.com.
Vous pourrez également matcher des urls avec leurs
protocoles respectifs à savoir http://www.monsite.com/mondossier/mapage.html ou
ftp://monsite.com, par exemple, ainsi que les url dynamique telle que
http://site.com/regex/page.php?truc=montruc&machin=lemachin et aussi
www.site.com/clicurl.php?truc=montruc&machin=lemachin et www.google.fr et [email protected]';
function clicklien($url){
$in=array(
'`((?:https?|ftp|mailto)://\S+[[:alnum:]]/?)`si',
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si',
'`([[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4}))`'
);
$out=array(
'<a href="$1">$1</a>',
'<a href="http://$1">$1</a>',
'<a href="mailto:$1">$1</a>'
);
return preg_replace($in,$out,$url);
}
echo clicklien($texte);
?>
Comme ça tout marche bien. Mais j'utilise la fonction nl2br() pour les sauts de lignes et c'est là que ça foire. Je simule un <br /> après un lien (www.monsite.com), par exemple :
$texte = 'Bonjour ou bonsoir à toutes et tous,
Vous souhaitez rendre cliquable une ou des urls placées au
travers de vos textes comme celle-ci www.monsite.com<br />.
Vous pourrez également matcher des urls avec leurs
protocoles respectifs à savoir http://www.monsite.com/mondossier/mapage.html ou
ftp://monsite.com, par exemple, ainsi que les url dynamique telle que
http://site.com/regex/page.php?truc=montruc&machin=lemachin et aussi
www.site.com/clicurl.php?truc=montruc&machin=lemachin et www.google.fr et [email protected]';
Et là ça ne marche plus. J'ai ceci comme résultat : Code : Tout sélectionner
www.monsite.com />. Vous pourrez également matcher des urls avec leurs protocoles respectifs à savoir http://www.monsite.com/mondossier/mapage.htmlSavez vous comment régler ce regex pour corriger l'erreur ? Je ne suis pas très fortiche...
Merci pour votre aide !