TRANSFORMER UNE URL EN LIEN CLIQUABLE

cs_NoKi Messages postés 2 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 13 mars 2002 - 13 mars 2002 à 21:18
rafplus Messages postés 7 Date d'inscription jeudi 17 septembre 2009 Statut Membre Dernière intervention 4 octobre 2009 - 2 oct. 2009 à 14:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12798-transformer-une-url-en-lien-cliquable

rafplus Messages postés 7 Date d'inscription jeudi 17 septembre 2009 Statut Membre Dernière intervention 4 octobre 2009
2 oct. 2009 à 14:45
Je ne suis pas sur de ls écurité de ce system, a vous de voir
camelion_ Messages postés 11 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 29 janvier 2010
2 déc. 2007 à 13:35
salut
comment peut on retrouverune liste de mot dans une chaine de charactere delimiter par < et > ou autre pour les utiliser ailleur
est ce que c'est possible ?
exp
salut tout <le monde> j'aime <codes-sources> c'est top
et on aurra on le tableau les mots :
le monde et codes-sources
WhiteDwarf Messages postés 510 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 23 mai 2008
17 août 2007 à 00:57
Et hop, encore une tite modif (j'ai testé avec des liens google et il manquait le ; et le +) :

$texte = eregi_replace("(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=#@:;+~,])*)", "\\1://\\2", $texte);

:D
WhiteDwarf Messages postés 510 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 23 mai 2008
16 août 2007 à 23:09
Pas mal ton script, il marche super bien je trouve, j'ai rajouté le caractère virgule, puisqu'il est souvent présent dans les URL (surtout avec l'URL rewritting)

$texte = eregi_replace("(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=#@:~,])*)", "\\1://\\2", $texte);

++
WhiteDwarf
idealyo Messages postés 44 Date d'inscription mercredi 16 juillet 2003 Statut Membre Dernière intervention 19 août 2006
9 août 2006 à 15:49
j'ai mis ce code dans un script qui gere le bbcode et ca marche pas tres bien car ensuite lorsque on fait des urls entre les balises [img] ca fait des liens :(
yvesio Messages postés 4 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 13 janvier 2005
24 mai 2006 à 15:09
ben si tu changes les caractères dans ta classe

ton code --> ('/([^ ]{'.$length.'})/si','\\1'.$separation,$string);

ce que je penses être mieux pour fusioner (voici un code qui change les liens + les emails en lien cliquables et divise les mots trop longs( en appui avec ta fonction que j'ai un peu modifié (j'ai mis en francais car c plus clair)

voila comment j'ai fait (et ça marche plutot bien)

$newsContenu = $tableauNews['contenu'];
//on enleve les slash eventuels, puis on fait des retour à la ligne
$newsContenu = stripslashes(nl2br($newsContenu));
//on fait que les adresse soient cliquables
$newsContenu = preg_replace('!http://[a-z0-9._/-]+!i', '[$0 $0]', $newsContenu);
//pareil pour les emails
$newsContenu = preg_replace('!([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4})!', '[mailto:$0 $1]', $newsContenu);
function flood($texte,$longueur='40',$separation=' ') //pour diviser les trop longues phrases sans espace
{

return preg_replace('/([1-9a-z*!?. -]{' . $longueur . '})/si','\\1' . $separation, $texte);

}
$newsContenu = flood($newsContenu);
echo $newsContenu;



Je sais que c peut-être pas la meilleure solution, mais bon ça marche, et c ça l'important, une fois que ton regex rencontre une balise < il s'arrete (du fait que tes adresse sont déja transformés en <a href ... )
mobman02 Messages postés 47 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 6 mai 2007
26 août 2005 à 19:14
Bonjour, j'aimerais utilisé ce genre de regex mais dans mon contexte je doit limiter la taille des mots...

C'est a dire que j'ai une fonction pour couper les mots trop long qui me coupe aussi toutes mes URL...

Serais ce possible de jumeler cette fonction avec la mienne :
function cutLongWords($string,$length='15',$separation=' ')
{
return preg_replace('/([^ ]{'.$length.'})/si','\\1'.$separation,$string);
}
pour dire a PHP de ne pas couper les mots contenue entre < et > ?
cs_NoKi Messages postés 2 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 13 mars 2002
13 mars 2002 à 21:18
Ton "pattern" (comme tous le monde l'apelle) n'est pas universelle.. c'est dommage, sinon bonne idée pour le remplacement des & et é ;-)
Bye
Rejoignez-nous