|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
Salut
j'ai une expression régulière qui permet de formater une URL Code :
existe t il un moyen d'afficher l'URL complète si elle fait moins de 50 car par ex, et dans le cas où elle en fait plus, d'afficher les 50 premiers car + ... Merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
ben il te suffit de scinder ton texte en morceau contenant au plus un lien hypertexte, tu passes ta fonction pour extrire le lien, tu compares sa longueur avec son seuil, et si besoin tu remplaces...
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
merci mais comment faire pour récupérer juste les URL ? s'il y en a plusieurs dans le message ?
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Tu peux faire un preg_replace_callback qui teste la longeur de chaine:
Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
j'ai mis exactement ton code mais ça me fait cette erreur :
Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : juin 2002 Messages : 1 013 ![]() |
tu peux utiliser strlen pour connaître la longueur de ta chaîne
tu peux utiliser substr pour récupérer la partie gauche d'une chaîne |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
oui mais bon mon message c'est :
$message = "blabla http://www.monsite.com blablabla"; donc je peux pas utiliser strlen et substr pour juste récupérer l'url |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Inscription : juin 2002 Messages : 1 013 ![]() |
je n'ai pas dit cela
j'avais cru comprendre que ton eregi_replace que je n'ai pas regardé te donne l'url dans la variable $message après, avec strlen et substr tu limites $message à 50 si tu crois que ton eregi_replace est faux, je veux bien regarder (plus tard...) |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Et mettant:
Code :
$message = preg_replace_callback("([[:alnum:]]+)\://([^[:space:]]*)([[:alnum:]#?/&=])", "test_lenght", $message); |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
non ça ne change rien, ça fait la même erreur avec le \ à la place de :
|
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() Inscription : juin 2002 Messages : 1 013 ![]() |
moi je suis nul en eregi (quand j'en fais un, pour qu'il fonctionne, il me faut au moins une semaine de dur labeur et réflexion)
alors je te propose les principes suivants : première solution :
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
merci mais ça risque d'être vraiment lourd au niveau traitement,
c'est pour ça que je voulais régler ça par expression régulière. |
|
|
00
|
|
|
#13 |
|
Membre émérite
![]() Inscription : juin 2002 Messages : 1 013 ![]() |
cela paraît lourd mais je prétends que cela ne se verra pas sur ton temps d'exécution, sauf si tu fais 150000 recherches d'url
bon je n'ai plus envie de me fatiguer mais je verrai demain petite remarque quand-même sur les ereg : primo, à mon avis, autant faire une recherche sur http que sur :// et secundo je ne pense pas qu'un point fasse partie de [[:alnum:]] |
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Essaoi ça:
Code :
|
||
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
effectivement ça fonctionne pour des url simples,
mais dès qu'il y a une variable ?var=variable, ça ne fonctionne plus. |
|
|
00
|
|
|
#16 | |
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Dans mon exemple avec
Citation:
Ca fonctionne. |
|
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
j'ai testé ton lien et ça ne fonctionne pas.
|
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Avec exactement mon code?!
C'est bizarre... il se passe quoi alors chez toi? |
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : octobre 2002 Messages : 42 ![]() |
autant pour moi, j'avais un autre bout de code avant qui génait ton code (la fonction htmlspecialchars qui transformait le & en & et donc ça ne fonctionnait plus),
maintenant ça marche mais par contre si le lien se trouve à la fin du texte, là il n'est pas remplacé, que faut il modifier pour que cela soit prit en compte aussi ? |
|
|
00
|
|
|
#20 | ||
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com