Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par thierry8, 19 Mai 2006.

  1. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Voila je présent tout d'abord mon problème.

    =>
    J'ai un texte entre deux balises personnalisée, que je souhaite bien entendu en forme. Un exemple sera plus compréhensible:
    [BALISE=1]mon texte[/BALISE]
    =
    <span id="1">mon texte</span>

    =>
    Pour ce cas je n'ai pas de problème en faisant ainsi:
    preg_replace('`\[BALISE=([0-9]+)\](.+)\[/BALISE\]`is', '<span id="$1">$2</span>', $texte)

    =>
    En revanche lorsqu'il y en a un dans un autre, j'ai un problème, exemple:
    [BALISE=1]mon texte[BALISE=2]mon texte[/BALISE]mon texte[/BALISE]
    =
    <span id="1">mon texte[BALISE=2]mon texte</span>mon texte[/BALISE]
    (la première balise correspond au rouge et se ferme avec la balise orange, cela ne coincïde pas)

    Or je souhaiterai ce résultat:
    <span id="1">mon texte<span id="2">mon texte</span>mon texte</span>


    J'espère que quelqu'un voudra bien m'aider, car j'ai vraiment beaucoup de difficulté sur ce point, et je ne sais absolument pas comment faire.
    Merci.
     
  2. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    Avec des balises personnalisées qui s'encastrent c'est compliqué de le faire en une seule expression régulière ... personnellement voici ce que je ferais (je ne sais pas si ça te conviendra mais bon c'est déjà ça ;) ):
    Code:
    <?
    
    $texte = '[BALISE=1]mon texte[BALISE=2]mon texte[/BALISE]mon texte[/BALISE]';
    
    $chercher = array
    (
    	'!\[BALISE=(\d+)\]!is',
    	'!\[/BALISE\]!is',
    );
    
    $remplacer = array
    (
    	'<span id="\1">',
    	'</span>',
    );
    
    $texte = preg_replace( $chercher, $remplacer, $texte );
    
    echo $texte;
    
    // <span id="1">mon texte<span id="2">mon texte</span>mon texte</span>
    
    ?>
     
  3. Jul-Wup
    Jul-Wup WRInaute discret
    Inscrit:
    13 Décembre 2005
    Messages:
    69
    J'aime reçus:
    0
    Un bon test à faire, c'est avec
    $texte = '[BALISE=1]mon texte[BALISE=2]mon texte[/BALISE][BALISE=3]mon textemon texte[/BALISE]';

    Et là, ça remplace [BALISE=3] par le span associé. Ce qui pose des problèmes avec les tableaux, bold etc... pour la mise en page.
     
  4. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Oui en effet, merci SuperPJ mais cette solution ne fonctionne pas pour la raison citée ci-dessus et pour d'autres encore...

    Si quelque avait encore une idée..... :(
     
  5. lefou
    lefou WRInaute discret
    Inscrit:
    7 Juin 2005
    Messages:
    126
    J'aime reçus:
    0
    En espérant que cela puisse t'aider :
    En fait je traîte la balise ouvrante et la balise fermante séparément.

    Ceci va bien pour l'affichage mais pose problème pour la création d'un nouveau texte. En effet, en supposant que [BALISE]texte[/BALISE] met le texte en gras, cela fonctionnera aussi si on n'a que [BALISE]texte (car le formatage aura lieu). Le truc est donc de tester au moment de l'enregistrement du texte s'il y a autant de balises [BALISE] que de balises [/BALISE] avec affichage d'un message d'erreur si ce n'est pas le cas (utilisation de la fonction substr_count pour chercher le nombre d'occurances dans le texte).
     
Chargement...
Similar Threads - Preg_replace délicat BESOIN Forum Date
Problème d'espaces en trop avec preg_replace() Développement d'un site Web ou d'une appli mobile 16 Novembre 2011
Problème particulier avec Preg_replace Développement d'un site Web ou d'une appli mobile 1 Mars 2011
Preg_replace : chercher un mot dans une chaine Développement d'un site Web ou d'une appli mobile 15 Février 2011
PHP : transformer un lien en img (ereg/preg_replace) Développement d'un site Web ou d'une appli mobile 30 Août 2010
Probleme preg_replace - remplace chaine par une autre dans un texte Développement d'un site Web ou d'une appli mobile 6 Mai 2010
preg_replace sur un lien url Administration d'un site Web 1 Avril 2010
Réécriture et preg_replace URL Rewriting et .htaccess 24 Décembre 2009
aide avec preg_replace Développement d'un site Web ou d'une appli mobile 26 Juillet 2009
preg_replace nettoyage extrème Développement d'un site Web ou d'une appli mobile 25 Mars 2009
preg_replace champs "VIDE" Développement d'un site Web ou d'une appli mobile 24 Mars 2009
[résolu] Problème avec preg_replace (le point) Développement d'un site Web ou d'une appli mobile 6 Janvier 2009
Fonction preg_replace besoin d'aide Développement d'un site Web ou d'une appli mobile 2 Janvier 2008
[Résolu] Preg_replace / Remplacement de texte Développement d'un site Web ou d'une appli mobile 14 Novembre 2007
[php] Utiliser preg_replace sur requete $_SERVER Développement d'un site Web ou d'une appli mobile 8 Octobre 2006
Une recherche avec un preg_replace Développement d'un site Web ou d'une appli mobile 28 Mai 2006
Petit problème preg_replace_callback appellé deux fois.. Développement d'un site Web ou d'une appli mobile 26 Avril 2006
preg_replace_callback [Résolu] Développement d'un site Web ou d'une appli mobile 5 Avril 2006
petit problème preg_replace : réglé Administration d'un site Web 4 Mai 2005
Situation délicate propriété de site web - HELP Droit du web (juridique, fiscalité...) 22 Octobre 2013
Liste des webmasters indélicats qui suppriment les liens discrètos après échange de liens Netlinking, backlinks, liens et redirections 25 Juillet 2012