begin process at 2012 02 12 08:20:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > TRANSFORMER UNE URL EN LIEN CLIQUABLE

TRANSFORMER UNE URL EN LIEN CLIQUABLE


 Information sur la source

Note :
7 / 10 - par 7 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Niveau :Initié Date de création :17/06/2001 Vu :17 194

Auteur : Romuald

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Ce source est une "simple" expression régulière qui va vous permettre de transformer une url dans un texte en lien cliquable (<a href="...">)

Source

  • <?php
  • //Attention ! ! Le texte qui arrive doit déjà être en HTML, c'est à dire pas d'accents par exemple mais des é
  • // Pour cela vous pouvez utiliser la fonction htmlentities()
  • function url2link($texte) {
  • // On remplace tout d'abord les "&" du texte (par exemple ceux qui peuvent être contenus dans une URL par un caractère accentué
  • $texte = str_replace("&", "é", $texte);
  • // Ensuite, voici la zolie regexp
  • $texte = eregi_replace("(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=#@:~])*)", "<a href=\"\\1://\\2\">\\1://\\2</a>", $texte);
  • // Enfin on renvoi le texte en remettant leurs "&" comme il faut
  • return str_replace("é", "&", $texte);
  • }
  • ?>
<?php
//Attention ! ! Le texte qui arrive doit déjà être en HTML, c'est à dire pas d'accents par exemple mais des é
// Pour cela vous pouvez utiliser la fonction htmlentities()
function url2link($texte) {
        // On remplace tout d'abord les "&" du texte (par exemple ceux qui peuvent être contenus dans une URL par un caractère accentué
        $texte = str_replace("&", "é", $texte);
        
        // Ensuite, voici la zolie regexp
        $texte = eregi_replace("(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=#@:~])*)", "<a href=\"\\1://\\2\">\\1://\\2</a>", $texte);
        
        // Enfin on renvoi le texte en remettant leurs "&" comme il faut
        return str_replace("é", "&", $texte);
}
?>  

 Conclusion

Ça marche pour beaucoup d'URL, mais je ne garanti pas que ça marche pour toutes, si vous rencontrez des URL sur lesquelles ça ne passe pas prévenez moi


 Sources du même auteur

CHARGE DE LA MACHINE
Source avec Zip PARSEUR DE DATES
Source avec Zip CLASSE POUR UTILISER LES SOCKETS
TESTER LA VALIDITÉ D'UN E-MAIL
LES COOKIES

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

Commentaires et avis

Commentaire de NoKi le 13/03/2002 21:18:14

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

Commentaire de mobman02 le 26/08/2005 19:14:15

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 > ?

Commentaire de yvesio le 24/05/2006 15:09:21

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', '<a href="$0">$0</a>', $newsContenu);
//pareil pour les emails
$newsContenu = preg_replace('!([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4})!', '<a href="mailto:$0">$1</a>', $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 ... )

Commentaire de idealyo le 09/08/2006 15:49:13

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 :(

Commentaire de WhiteDwarf le 16/08/2007 23:09:16

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\/\.\?_=#@:~,])*)", "<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>", $texte);

++
WhiteDwarf

Commentaire de WhiteDwarf le 17/08/2007 00:57:21

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\/\.\?_=#@:;+~,])*)", "<a href=\"\\1://\\2\" target=\"_blank\" rel=\"nofollow\">\\1://\\2</a>", $texte);

:D

Commentaire de camelion_ le 02/12/2007 13:35:55

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

Commentaire de rafplus le 02/10/2009 14:45:44

Je ne suis pas sur de ls écurité de ce system, a vous de voir

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales