zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 2010
-
9 avril 2008 à 06:00
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 2010
-
26 mai 2008 à 02:18
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@:%_\+.~#?&//=]+)','[\\1 \\1]', $adr);
$adr = eregi_replace('([[:space:]()[{}])(www\.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1\\2', $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
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...
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 9 avril 2008 à 06:44
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...
<hr size="2" width="100%" />Neige
N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 11 avril 2008 à 16:52
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 -> site web]
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 11 avril 2008 à 21:14
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 [..... ....], mais le premier argument que tu asses à ta fonction mkurl est :
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('$1$2');
if ($mailto) {
$search[] ='`([\w\.\-_]{2,}@(?:[\w-]{2,}\.)+[\w]{2,}\s)`i';
$replace[] = '[mailto:$1 $1]';
}
if ($irc) {
$search[] = '`irc://([\w\.-]+\.[a-z]{2,}(?:\:[0-9]{1,5})?)`i';
$replace[] = '[irc://$1 $1]';
}
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.
et la fonction que tu m'as suggéré crée le meme bug que celle que javais.
www.lesouterrain.com 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 site web]