begin process at 2012 05 30 13:06:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Creation de liens automatique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Creation de liens automatique

mercredi 9 avril 2008 à 06:00:19 | Creation de liens automatique

zen69

Bonjours a tous j'essaie de me faire une fonction qui me permettrait de convertir les adresses en hyperlien mais je n'arrive pas a une sans bugs... peut-etre que quelqu'un peut m'aider ?

Voici ce que j'ai a ce point.

function mkurl($adr, $mailto = false, $irc = false)
{
    $adr = eregi_replace('(((ftp|http|https)://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a href="\\1">\\1</a>', $adr);
    $adr = eregi_replace('([[:space:]()[{}])(www\.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a href="http://\\2">\\2</a>', $adr);
    $adr = ($mailto) ? mkmailto_url($adr) : $adr;
    $adr = ($irc) ? mkirc_url($adr) : $adr;
    return substr($adr, 1);
}

Et voici un test qui prouve que je ma fonction est incomplete

echo mkurl('<br><br><br> www.test.com http://www.lesouterrain.com wwwowww test.12@lesouterrain.com irc://irc.dal.net:6667/yo?ya <a href="http://www.lesouterain.com" target="_blank"> www.lesouterrain.com</a> ', true, true));

En fait ce qu'il me manque c'est de faire un test supplementaire qui verifie que l'adresse n'est pas deja transformé en lien, mais je n'ai aucune idée comment m'y prendre...





  zen69 aka Ortho Le Profett
  [site web]
mercredi 9 avril 2008 à 06:44:36 | Re : Creation de liens automatique

neigedhiver

Salut,

Est-ce que tu pourrais préciser un peu à quoi est censé ressembler le contenu de la variable $adr que tu passes en argument de ta fonction ?
Et qu'est-ce que tu veux obtenir précisément ?

A tous les coups, ça se fait avec une seule PCRE, encore faut-il savoir exactement ce que tu as en entrée et ce que tu veux en sortie...


Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
vendredi 11 avril 2008 à 16:52:42 | Re : Creation de liens automatique

zen69

Si tu regardes bien j'ai un exemple d'utilisation en dessous de ma fonction...

Le contenu : Cette $adr est en fait un texte entier pouvant etre tres long...
Le resultat voulu : Le même texte mais avec toute les adresse convertie en liens.
    eg:
          www.lesouterrain.com -> devient -> <a href='http://www.lesouterrain.com' target='_blank'>www.lesouterrain.com</a>

Le probleme : Lorsqu'une adresse est deja un liens ma fonction la retransforme quand meme alors ca creer un liens pas d'allure imbriqués.



  zen69 aka Ortho Le Profett
  [site web]
vendredi 11 avril 2008 à 21:14:59 | Re : Creation de liens automatique

neigedhiver

Euh oui, j'ai justement bien regardé, et quand je voyais ce que tu passais en argument, ça me laissait perplexe.
Parce que tu dis justement que www.lesouterrain.com devient <a href="..... ">....</a>, mais le premier argument que tu asses à ta fonction mkurl est :
<br><br><br> www.test.com http://www.lesouterrain.com wwwowww test.12@lesouterrain.com irc://irc.dal.net:6667/yo?ya <a href="http://www.lesouterain.com" target="_blank"> www.lesouterrain.com</a> 
Excuse-moi de me perdre dans cette chaine : je ne sais pas ce que tu dois transformer dans tout ça...

Et je te demandais pas un exemple, mais une description précise de ce que tu veux faire. Parce que justement, ton exemple...
Bref...

Si tu veux simplement transformer un www.domaine.tld en html cliquable avec un attribut target, c'est pas très très compliqué. Ton problème de transformation d'adresse déjà mise en forme, j'avais bien compris : il est du à une mauvaise utilisation des expression régulières, et au fait que tu n'utilises pas la bonne fonction pour ça.

Essaie ça :
function mkurl($sText, $mailto = false, $irc=false) {
$search = array('`\s(?:http://|(www\.))([^\s]+)`i');
$replace = array('<a href="http://$1$2" target="_blank">$1$2</a>');
if ($mailto) {
$search[] ='`([\w\.\-_]{2,}@(?:[\w-]{2,}\.)+[\w]{2,}\s)`i';
$replace[] = '<a href="mailto:$1">$1</a>';
}
if ($irc) {
$search[] = '`irc://([\w\.-]+\.[a-z]{2,}(?:\:[0-9]{1,5})?)`i';
$replace[] = '<a href="irc://$1">$1</a>';
}

return preg_replace($search, $replace, $sText);
}
Je n'ai pas fait de tests approfondis, donc je ne sais pas si c'est ce qu'il y a de plus efficace et de moins consommateur en ressources.
A priori ça marche. Y compris sur les URL accentuées.

Ca doit chopper les url comme celles-ci :

www.mondomaine.tld
http://sous.domaine.tld
http://sous.domaine.tres.loin.en.dessous.tld
www.mon.super.domaine.que.j-en.suis.trop.fier.tld
www.fier.d.être.geek.tld

Mais pas :

www.mon.domaine.invalide-tld

Pour les mails, ça capture :

mon.email@domaine.tld
mon.email@mon.super.domaine.que.j-en.suis.trop.content.tld
em@il.com

Mais pas :

mon.email@i.com
mon.email@domaine.invalide-tld

Pour les liens irc, ça capture :

irc://mon.serveur.tld:12345
irc://mon.serveur.tld

Mais pas :

irc://mon.s:12345
irc://mon.s-rv

Les PCRE ne sont peut-être pas parfaites, elles laissent peut-être passer des trucs qu'elles ne devraient pas, ou l'inverse...

Pour des explications sur les PCRE :
- http://fr.php.net/manual/fr/book.pcre.php
- http://fr.php.net/manual/fr/reference.pcre.pattern.syntax.php
- http://www.lumadis.be/regex/tuto_pcre.php


Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
lundi 26 mai 2008 à 02:18:07 | Re : Creation de liens automatique

zen69

C'est presque ca... mais il y a tout de meme un bug.

ceci est ma ligne de test

echo encode_email(mkurl('<br><br><br> www.test.com http://www.lesouterrain.com wwwowww j.bonnier@lesouterrain.com irc://irc.dal.net:6667/yo?ya <a href="http://www.lesouterain.com" target="_blank"> www.lesouterrain.com</a> ', true, true));

et la fonction que tu m'as suggéré crée le meme bug que celle que javais.
<a href="http://www.lesouterain.com" target="_blank"> www.lesouterrain.com</a>
cette partie du texte passer en parametre creer un mauvais url.


en fait ce que je cherche a faire, c'est quelque chose qui me permet d'ajouter les balises <a href=...></a> seulement si elles ne sont pas deja au tour de l'url.



  zen69 aka Ortho Le Profett
  [site web]


Cette discussion est classée dans : test, www, irc, adr, com


Répondre à ce message

Sujets en rapport avec ce message

comparaison 2 URLs [ par Orlulas ] Bonjour @tous et @toutes, Depuis plusieurs jours maintenant je bute sur un script en apparence tout bête : dans ma base de données je dispose d'un HttpMail [ par NicoWatt ] Bonjour à tous,Je suis actuellement sur le développement du site Internet www.plopibox.com.Dans ce site on propose un module permettant de récupérer l Problème d'alignement centré [ par ArianeA ] Bonjour, Je n'arrive pas à centrer un tableau sur une page php de mon forum. Il faut dire que ça marche sur IE, mais pas sur FF, ce qui n'est pas norm Redirection htaccess et changement d'index [ par niminims ] Bonjour, Sur mon hébergement j'ai à la racine: - Dossier A - Dossier B Je voudrais que : http://www.monsite.com/ redirige vers http://www.monsite.c deux redirections sur un meme site [ par mengus ] Bonjour,Je ne sais ou poser cette question mais dans la section php cela me semble ne pas etre trop "HS"Voila je désire faire pointer deux nom de doma Decalage avec internet explorer 6 [ par maxetime ] Bonjour à tous, j'ai fait une modification récentes sur un site web et cela crée un décalage d'une image dans internet explorer 6 seulement. L'image Besoin d'aide concernant le Mod Rewrite d'Apache et .htaccess [ par roymatthieu ] Bonjour à tous,J'ai besoin d'aide concernant le Mod Rewrite d'Apache.J'arrive à faire plus ou moins ce que je veux suite à plusieurs recherche mais j' Redirection et nouveau domaine [ par djew ] Bonjour à tous ! Je vous explique mon soucis : Grace à l'url rewriting, j'ai créé différentes redirection de type : www.monsite.com/nom1 qui poin probleme de rotateur de banniere de pub [ par stomy95 ] bonjour,j'ai un script qui fonctionne sur un de mes sites c'est un rotateur de banniere de pub qui change automatiquement  le nombre de seconde regler http://www.phpcs.com/infomsg.aspx?ajout=1 [ par SiniZoWn ] bonjour, je débute en php et j'ai suivis le tuto :  http://www.phpcs.com/co


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,234 sec (3)

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