Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2150 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php][expresions régulieres] couper les liens sur un forum

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php][expresions régulieres] couper les liens sur un forum

n°963194
p@radox
Posté le 26-01-2005 à 22:28:00  profilanswer
 

salut à tous (tes)  
 
je cherches l'astuce pour qu'un lien posté sur un forum soit "coupé", un peu comme ici par ex :  
http://forum.hardware.fr/message.p [...] subcat=393
 
vous voyez ? bon j'ai deja ça :  

Code :
  1. $body = eregi_replace("(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=#@:~&% '])*)", "<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>", $body);


 
comment faire limiter ce \\2 ?
merci de votre aide


Message édité par p@radox le 26-01-2005 à 23:01:04
mood
Publicité
Posté le 26-01-2005 à 22:28:00  profilanswer
 

n°963200
FlorentG
Unité de Masse
Posté le 26-01-2005 à 22:30:14  profilanswer
 

1) Tu fais ton site XHTML compliant
2) tu l'ouvre en tant que document XML (avec la librairie DOM XML)
3) T'appelle la fonction get_elements_by_tagname, pour récupérer tous les 'a'
4) Tu regarde la longeur du contenu, récupéré par get_content.
5) Puis suivant la longueur, tu modifie en mettant les [...] avec set_content.
6) Enfin, tu output le truc
 
En conclusion -> Faites des pages valide XHTML, ça aide ;)


Message édité par FlorentG le 26-01-2005 à 22:30:44
n°963207
p@radox
Posté le 26-01-2005 à 22:33:24  profilanswer
 

ok ça va demander plus de travail que je ne pensais (eh oui je suis une authentique feignasse) merci qd meme :)


Message édité par p@radox le 26-01-2005 à 22:34:20
n°963211
FlorentG
Unité de Masse
Posté le 26-01-2005 à 22:34:40  profilanswer
 

Bah, si ton site est compliant, ce ne sera pas très dur à faire ;)

n°963216
p@radox
Posté le 26-01-2005 à 22:38:26  profilanswer
 

FlorentG a écrit :

Bah, si ton site est compliant, ce ne sera pas très dur à faire ;)


il ne l'est pas  [:totoz]  
 
 
(du tout!)


Message édité par p@radox le 26-01-2005 à 22:38:38
n°963233
FlorentG
Unité de Masse
Posté le 26-01-2005 à 22:47:47  profilanswer
 

Ah... Effectivement... On ne le répètera jamais assez, faites votre site en XHTML ! Ca peut vous sauver la vie !

n°963238
FlorentG
Unité de Masse
Posté le 26-01-2005 à 22:50:08  profilanswer
 

Oui, en fait ce forum, soit cherche les balises [url], soit fait une expression régulière barbare comme la tienne :D

n°963240
p@radox
Posté le 26-01-2005 à 22:51:32  profilanswer
 

FlorentG a écrit :

Ah... Effectivement... On ne le répètera jamais assez, faites votre site en XHTML ! Ca peut vous sauver la vie !


merci du conseil ;)
en fait je pense qu'il faut y penser avant ! car apres ça devient assez casse tete..

n°964025
p@radox
Posté le 27-01-2005 à 20:20:00  profilanswer
 

pas d'autre solutions donc ?
 
je dit ça finalement ce forum n'est pas valide xhtml non plus http://validator.w3.org/check?uri= [...] formulaire


Message édité par p@radox le 29-01-2005 à 00:24:32
n°964031
FlorentG
Unité de Masse
Posté le 27-01-2005 à 20:32:49  profilanswer
 

Oui il est pas valide. Regarde mon post précedent :)

mood
Publicité
Posté le 27-01-2005 à 20:32:49  profilanswer
 

n°964303
soju
One shot !
Posté le 28-01-2005 à 09:40:45  profilanswer
 

p@radox a écrit :

Code :
  1. $body = eregi_replace("(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=#@:~&% '])*)", "<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>", $body);



Utilise preg_replace avec l'option e (voir doc), voici un exemple avec ta regexp :

Code :
  1. $body = preg_replace("#(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=\#@:~&% '])*)#ei", "build_url('\\0')", $body);

et tu crée une fonction build_url qui pourra "couper" le nom du lien selon la longueur.
 
PS :
- ta regexp n'est pas très propre,
- j'ai du mal à comprendre pourquoi tu insère du bbcode dans ton lien.


Message édité par soju le 28-01-2005 à 09:49:05
n°965249
p@radox
Posté le 29-01-2005 à 01:27:54  profilanswer
 

soju a écrit :

Utilise preg_replace avec l'option e (voir doc), voici un exemple avec ta regexp :

Code :
  1. $body = preg_replace("#(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=\#@:~&% '])*)#ei", "build_url('\\0')", $body);

et tu crée une fonction build_url qui pourra "couper" le nom du lien selon la longueur.
 
PS :
- ta regexp n'est pas très propre,
- j'ai du mal à comprendre pourquoi tu insère du bbcode dans ton lien.


 
 
merci beaucoup à tous les deux de vos conseils : cependant j'ai choisi les regexp !
en fait, soju, le BB code vient de hfr, je voulait mettre en relief ce bout de code (mais je suis gouré, et en fait ça marche dans les [/code] )
Donc ça marche nickel : voici donc,  
 

Code :
  1. $body = preg_replace("#(http)://(([-éa-zA-Z0-9\/\.\?_=\#@:~&% '])*)#e", "build_url('\\0')", $body);
  2. function build_url($url){
  3. if ( strlen($url)>70){
  4. $new_url_end = substr($url, -20);
  5. $new_url_begin = substr($url, 0,60);
  6. $new_url = $new_url_begin." [...] ".$new_url_end;
  7. $url = "<a href=".$url." target='_blank'>".$new_url."</a>";
  8. }
  9. else{
  10. $url = "<a href=".$url." target='_blank'>".$url."</a>";
  11. }
  12. return $url;
  13. }


 
 [:freekill]   :jap:


Message édité par p@radox le 29-01-2005 à 01:29:21

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php][expresions régulieres] couper les liens sur un forum

 

Sujets relatifs
Fichier sur forum ou site mon site AidE!!!!!!Afficher une page web dans un post sur un forum phpbb2
forum phpbb..Probleme forum compatibilité mozilla
problème de post sur un forumFABRIQUER UN FORUM DS MON SITE?
Documents de fusion,liens hypertexte => Galereprobleme liens
Cherche Forum, avec sous catégorie.php et liens
Plus de sujets relatifs à : [php][expresions régulieres] couper les liens sur un forum


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR