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

  FORUM HardWare.fr
  Programmation
  PHP

  gérer [code][/code] avec une regex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gérer [code][/code] avec une regex

n°811207
andOceans
AMGOD
Posté le 30-07-2004 à 14:53:37  profilanswer
 

J'essaie de gérer l'utilisation de pseudo balise [ code ] et [/ code ] dans un texte écrit par un membre de mon site. Le problème étant que je n'arrive pas à trouver la bonne regex qui puisse tout bien remplacer, en gérant bien les cas foireux ou on écrit deux balises code et on en ferme qu'une par exemple.
J'aimerai que la regex remplace uniquement les associations code /code (cela évite de remplacer un 'code' isolé et tout faire foirer l'affichage)
 

Code :
  1. $contenu = ereg_replace('\[code\](.*)\[/code\]', '<div class="code">\\1</div>', $contenu);


 
Le problème est que ça ne gère par les cas où y'a deux blocs de 'code /code' dans le message par exemple, il ne prend en compte que le 1er 'code' et le dernier '/code' et donc fusionne tout.
 
Une idée ? ça doit être une histoire de flag ?

mood
Publicité
Posté le 30-07-2004 à 14:53:37  profilanswer
 

n°811497
andOceans
AMGOD
Posté le 30-07-2004 à 19:00:14  profilanswer
 

Je sèche. :o

n°811506
gizmo
Posté le 30-07-2004 à 19:08:31  profilanswer
 

En une seul regexp, c'est pas possible, tout simplement.

n°811510
Profil sup​primé
Posté le 30-07-2004 à 19:15:11  answer
 

essaye
 

Code :
  1. while (preg_match('\[code\](.*)\[/code\]', $contenu)) {
  2.    $contenu = ereg_replace('\[code\](.*)\[/code\]', '<div   class="code">\\1</div>', $contenu);
  3. }

n°811513
andOceans
AMGOD
Posté le 30-07-2004 à 19:19:45  profilanswer
 

La syntaxe du preg_match est mauvaise. :/

n°811520
Profil sup​primé
Posté le 30-07-2004 à 19:33:36  answer
 
n°811528
karamilo
Posté le 30-07-2004 à 19:40:32  profilanswer
 

Il faut limiter la gourmandise de la regex : le moteur cherche le motif qui correspond le plus court possible (au lieu du plus long possible). Tu mets ? apres .* pour ca.
 

Code :
  1. $contenu = preg_replace('#\[code\](.*?)\[/code\]#s', '<div class="code">\\1</div>', $contenu);


 
exemple :
[ code ] [ code ] [ / code ] [ /code ] donnera :
<div>[ code ] </div> [ /code ]
C'est pas un comportement très génant puisque la balise code n'a pas de raison d'etre imbriqué.
 
[ code ] [ /code ] [ code ] [ /code ] donnera :
<div></div><div></div>

n°811539
andOceans
AMGOD
Posté le 30-07-2004 à 19:57:29  profilanswer
 

chacal, comme si je l'avais pas déjà fait. :o
 
karamilo, merci beaucoup, c'est impecc'. :)


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

  gérer [code][/code] avec une regex

 

Sujets relatifs
[VC++6/MFC] Facilités pour gérer une configuration, genre fichier ini?[JSP] [RESOLU] Comment gerer les dates?
J2EE : Comment gérer les cas limites d'une EJB sans JTA ?Regex contenue dans une chaine de caractère
[HOW TO] Gérer proprement les erreurs avec ASP[java] peut on gérer des fichiers excel ?
wxPython --> Comment gérer les boutons qui ouvrent des fenêtres[ADVANCED] gerer les connections browser .
transaction en php/mysql : comment gerer 1 trs ds plusieurs scripts ?Regex toujours...
Plus de sujets relatifs à : gérer [code][/code] avec une regex


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