IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Expression régulière débutant mettre texte en gras [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 50
    Par défaut Expression régulière débutant mettre texte en gras
    Re bonjour,
    Je cherche a remplacer du wiki texte par de l'html. Pour le coup j'ai des balises ['''] texte en gras [/'''] que je doit remplacer par <b>texte en gras</b>
    Je connais plusieurs soluces pour le faire mais la soluce qui m'intéresse bug.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $s_input = preg_replace("#\['''\](.*)\[/'''\]#",'<b>$1</b>',$s_input);
    Mon problème dans cette expression est qu'il est capable de gérer un chaine avec 1 fois les balises ['''] et [/'''], mais quand il y a plusieurs fois du gras dans la phrase alors il met en gras tous ce qui se trouve a partir de la première balises jusqu'a la dernière ce qui est logique ...
    est ce que quelqu'un peux me donner un coup de main ?
    Si je trouve pas la soluce alors je ferais un str_replaces de mes balises par des bonnes.

    Merci bon code.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    donne-nous un exemple mais c'est possible que le drapeau "U" règle [en partie] ton problème
    essayes : #\['''\](.*)\[/'''\]#U
    http://www.lumadis.be/regex/tuto_pcre.php#oU
    pour les explications sur le U

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Pour info je conseille d'utiliser <strong /> plutôt que <bold />. Strong signifiant la précense d'un mot sémantiquement fort.

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Miaou le chat thon Voir le message
    donne-nous un exemple mais c'est possible que le drapeau "U" règle [en partie] ton problème
    essayes : #\['''\](.*)\[/'''\]#U
    http://www.lumadis.be/regex/tuto_pcre.php#oU
    pour les explications sur le U
    L'option U (ungreedy) règlera certainement le problème, mais je ne l'aime pas : trop spécifique aux fonctions preg.
    Utiliser le quantifieur minimal ? aura le même effet, mais sera plus portable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $s_input = preg_replace("#\['''\](.*?)\[/'''\]#",'<b>$1</b>',$s_input);
    Enfin, la solution la plus élégante devrait se rapprocher de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    $str = "[''']foo[/'''][''']bar[/''']['''][/''']";
     
    $reg = "#\['''\](((?!\[/'''\]).)*+)\[/'''\]#";
     
    $str = preg_replace($reg, '<b>$1</b>', $str);
     
    print_r($str);

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    str_replace ne serait pas plus adapté dasn cette configuration ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $chaine="['''] texte en gras [/'''] ";
    $out=array("[''']","[/''']");
    $in=array("<b>","</b>");
    $res=str_replace($out, $in,$chaine);
    echo $res;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    str_replace ne serait pas plus adapté dasn cette configuration ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $chaine="['''] texte en gras [/'''] ";
    $out=array("[''']","[/''']");
    $in=array("<b>","</b>");
    $res=str_replace($out, $in,$chaine);
    echo $res;
    Si, et au niveau perfs il n'y aura pas photo.
    Mais le monsieur disait qu'il était intéressé par la solution PCRE.

    Et sur DVP, le client est roi.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 50
    Par défaut
    Merci a tous de vos réponses, je testerais les différentes soluces se soir en rentrant.
    encore merci.
    Bon code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. expressions régulières dans widget text
    Par Ruyneau dans le forum Tkinter
    Réponses: 5
    Dernier message: 16/02/2012, 08h32
  2. mettre texte en gras code behind
    Par meri_mima dans le forum ASP.NET
    Réponses: 5
    Dernier message: 19/11/2009, 15h44
  3. expression régulières et couleur texte
    Par patou41000 dans le forum C++/CLI
    Réponses: 5
    Dernier message: 10/07/2007, 22h59
  4. Expressions régulières : cibler du texte entre ligne vide, {
    Par lrbabe dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 27/02/2007, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo