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

  FORUM HardWare.fr
  Programmation
  PHP

  Une quote dans une quote [regexp]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une quote dans une quote [regexp]

n°574965
Profil sup​primé
Posté le 24-11-2003 à 18:22:22  answer
 

hmmm pas tres facile la.
Grace a l'autre topic sur les regex j'avais eu assez de bout de code pour comprendre comment monter un systeme de quote assez banal a savoir [quote=le_nom]blabla[/quote] qui donnais a peu pres le meme resultat qu'ici.
 
Par contre si je fait [quote=le_nom][quote=le_nom]blabla[/quote]blabla[/quote] la ca part en vrille et il considerre le premier [/quote] comme etant la fin du premier [quote] et m'inscrivant ainsi le dernier quote comme un message banale :o [:totoz]
 
le resultat ici : http://chak.serveftp.com/chak_foru [...] at=2&sub=2
 
ma reg :

Code :
  1. $ToPreg=preg_replace("#\[quote=(.*?)\](.*?)\[/quote\]#si",'<center>
  2. <table style="width:550px; border:none;"><tr><td style="padding:1px; font-weight:bold; border:none;">$1 wrote :</td>
  3. </tr><tr><td style="background-color : #5F5F5F; padding:4px">$2</td></tr></table></center>', $ToPreg);


 
help :)


Message édité par Profil supprimé le 24-11-2003 à 18:22:44
mood
Publicité
Posté le 24-11-2003 à 18:22:22  profilanswer
 

n°574978
karamilo
Posté le 24-11-2003 à 18:34:50  profilanswer
 

question tres interessante, je serais curieux de voir une regex qui fonctionne sur :  
 

Citation :


Citation :






Citation :




 
 
La seule solution que j'ai trouvée est de parser a la main a coup de strpos substr_replace. Ca marche du tonnerre mais c'est assez fastidieux.


Message édité par karamilo le 24-11-2003 à 18:35:10
n°574981
gizmo
Posté le 24-11-2003 à 18:38:35  profilanswer
 

preg_replace("/\[quote=(.*?)\](.*?)\[/quote\]/si",'<div>'.$1.' a écrit:<br />'.$2.'</div>',$text);
devrait fonctionner

n°574993
Profil sup​primé
Posté le 24-11-2003 à 18:46:14  answer
 

gizmo a écrit :

preg_replace("/\[quote=(.*?)\](.*?)\[/quote\]/si",'<div>'.$1.' a écrit:<br />'.$2.'</div>',$text);
devrait fonctionner

en effet :ouch:  
 
merci bcp je vais decortiquer tout ca :)

n°574994
Profil sup​primé
Posté le 24-11-2003 à 18:47:31  answer
 

ha mais nan en fait :lol:
 
ca marche qu'avec 2 quote mais si les utilisateur decident de faire un championnat de quote je suis mal :/

n°574999
Profil sup​primé
Posté le 24-11-2003 à 18:52:16  answer
 

wai en fait ma regexp fonctionnait nikel mais faut que j'en mette une par quote.
 
Si je met une fois  
$ToPreg=preg_replace("#\[quote=(.*?)\](.*?)\[/quote\]#si",'<center>
<table style="width:550px; border:none;"><tr><td style="padding:1px; font-weight:bold; border:none;">$1 wrote :</td>
</tr><tr><td style="background-color : #5F5F5F; padding:4px">$2</td></tr></table></center>', $ToPreg);
 
ca me fera qu'un quote, si j'en met 2 ca en fera 2...

n°575004
gizmo
Posté le 24-11-2003 à 18:57:02  profilanswer
 

euh... et tu vas la foutre dans une boucle? :heink:
 
A mon avis, le plus simple serait d'utiliser preg_replace_callback.

n°575012
Profil sup​primé
Posté le 24-11-2003 à 19:07:13  answer
 

hm wai jamais utilisé cette fonction et il me chie a la geule :/

Code :
  1. $ToPreg=preg_replace_callback("#\[quote=(.*?)\](.*?)\[/quote\]#si", '<center>
  2. <table style="width:550px; border:none;"><tr><td style="padding:1px; font-weight:bold; border:none;">$1 wrote :</td>
  3. </tr><tr><td style="background-color : #5F5F5F; padding:4px">$2</td></tr></table></center>', $ToPreg);


 

Code :
  1. Warning: preg_replace_callback() requires argument 2, '
  2. $1 wrote :
  3. $2
  4. ', to be a valid callback in e:\coding\chak_forum\include\replace.php on line 58
  5. pwned !


 
je voit pas ce qu'il a d'invalide


Message édité par Profil supprimé le 24-11-2003 à 19:07:52
n°575022
Freekill
Electron libre…
Posté le 24-11-2003 à 19:11:57  profilanswer
 

ceci fonctionne :
 

Code :
  1. while (preg_match("/(\[quote\])(.+?)(\[\/quote\])/si",$text))
  2. {
  3. $text = preg_replace( "/(\[quote\])(.+?)(\[\/quote\])/si", "<table width=\"90%\" align=\"center\"><tr><td class=\"qte\">\\2</td></tr></table>", $text);
  4. }


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°575024
Freekill
Electron libre…
Posté le 24-11-2003 à 19:13:38  profilanswer
 

chacal_one333 a écrit :


je voit pas ce qu'il a d'invalide


 
rtfm! :o
 
avec preg_replace_callback(), le 2ème argument doit être une fonction de callback


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
mood
Publicité
Posté le 24-11-2003 à 19:13:38  profilanswer
 

n°575026
Profil sup​primé
Posté le 24-11-2003 à 19:14:58  answer
 

egalement :jap:
j'ai appris un truc merci :hello:

n°575030
Freekill
Electron libre…
Posté le 24-11-2003 à 19:19:22  profilanswer
 

Mais je ne garantis pas que ce soit la solution la plus élégante/efficace? :D


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°575035
Profil sup​primé
Posté le 24-11-2003 à 19:24:06  answer
 

quand ca marche c'est efficace :jap:

n°575036
Freekill
Electron libre…
Posté le 24-11-2003 à 19:25:09  profilanswer
 

Ceci est déjà un peu mieux :
 

Code :
  1. $matches = array();
  2. preg_match_all("/(\[quote\])(.+?)(\[\/quote\])/si",$text,$matches);
  3. for($i=0;$i<sizeof($matches);$i++)
  4. {
  5. $text = preg_replace( "/(\[quote\])(.+?)(\[\/quote\])/si", "<table width=\"90%\" align=\"center\"><tr><td class=\"qte\">\\2</td></tr></table>", $text);
  6. }


 
Ca évite de relancer un preg_match à chaque fois? :D


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6

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

  Une quote dans une quote [regexp]

 

Sujets relatifs
[JS] urgent :'( problemes regexp !- Aide pour script regexp -
Regexp: Savez pourquoi?Programme pour tester des regexp sur du texte?
[regexp] serialize unserialize transparent entre php et js :)Problème avec les regexp...
[JS] Probleme de RegExp[Perl] Petite regexp
[PHP] Regexp : problème pour exclure une chaine 
Plus de sujets relatifs à : Une quote dans une quote [regexp]


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