|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 193 ![]() |
Bonsoir @ tous,
Je souhaite une fois que j'ai récupérer le contenu d'un post afficher le résultat. Et si dans le contenu, il y a une URL, je souhaite la rendre cliquable. jusqu'ici tout va bien et voila ce que je fais : Code :
$sHtml = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" class=\"lien\" target=\"_blank\">\\0</a>", $sHtml); Moi ce que je voulais c'est que cela fasse la meme chose si l'on envoie que www.bob.fr alors j'ai esayer de faire de couplé le code ci-dessus avec un autre ereg_replace : "www[^<>[:space:]]+[[:....." mais evidement ca se mélange les pinceaux. Donc si vous aviez une solution à mon problème, ce serait génial... Merci |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Bonjour,
Tu peux rendre, dans ton pattern, le http:// comme étant facultatif et devant apparaître 0 ou 1 fois: Code :
dans ce cas il faut a mon avis que tu fasses plusieurs cas mais sans les combiner. Tu detectes dans quel cas tu es par un preg_match (http://www ou http:// sans www, ou encore juste www.) et ensuite tu fais ton ereg_replace() |
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 193 ![]() |
Je me doutais que ce ne serait pas si simple que ca... Et puis les expressions régulières et moi, ca fait plusieurs !
Je vais essayer de chercher une solution. En tout cas merci. Schuss |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
Essaye celle la :
Code php :
preg_replace('#([a-z]+://)?(www.)?[a-z0-9-_]+\.[a-z]{2,4}(?:[^.]+\.[a-z0-9]+)?#i', '<a href="$0" class="lien" target="_blank">$0</a>', $sHtml); Si elle te convient, je pourrais toujours te l'expliquer |
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 193 ![]() |
Merci Korco,
Afin d'y apporter la denière modifcation qui me donnera entière satisfaction : transformer tous les www. en http://www. dans le href pour que tous les liens fonctionnent. Je veux bien que tu m'expliques le fonctionnement de cette expression régulière. Voici ce que je pense avoir compris Code :
euh et après j'suis largué |
||
|
|
00
|
|
|
#6 | |||
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
Korko stp ^^
Tien voila (jlai amélioré) Code :
Citation:
|
|||
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 193 ![]() |
Oups, désolé "quorquau" pour la fote !
Bon en vrai,MERCI beaucoup Korko Fain pour les explications, j'y vois plus clair. En revanche je comprends pas bien ce que tuveux faire avec preg_replace_callback, tu veux appeler la fonction make_link ? dans ce cas pour le faire comme s'il s'agissait d'un string ? Autrement si j'ai bien compris, ta fonction ajoute ta fonction make_link ajoute le http:// si il n'est pas renseigné. |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
la fonction preg_replace_callback appel la méthode dite 'callback' à chaque fois que tu trouve une chaine qui correspond à ta regex. La méthode callback est soit le nom de la fonction soit un tableau contenant le nom de la classe et le nom de la méthode.
La methode callback prend en parametre le tableau de capture et doit retourner la chaine de remplacement. Ici ça me permet d'ajouter http:// si il n'y est pas. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com