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 :

Fonction extrayant du texte autour d'un BBcode [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut Fonction extrayant du texte autour d'un BBcode
    Bonjour,
    Voila je m'énerve depuis hier pour trouver ou créer une fonction qui m'extrait les texte autour d'une balise \[code\]\[/code\] (enlevez les antislashes)

    c'est à dire que je cherche a prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le texte qui se trouve ici\[code\]ou encore ici\[/code\]si ce n est la
    seul problème c'est que je n'y arrive pas

    Quelqu'un a une solution???

    Merci
    Gwennin

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Problème résolut

    j'ai pensé à la solution quand je venait de poster...

    pour les personnes qui peuvent avoir se problème simple (pas se prendre la tête!!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
       $texte = 'dfdfrgh[code*]<\?php echo "<b>blabla</b>"; ?>[/code*]wfrg';
     
       $debut = substr( $texte, 0, strpos( $texte, '[code*]' ) );
       $code = substr( $texte, 0, strpos( $texte, '[/code*]' ) );
       $code = preg_replace('#(.+)\[code\](.+)#isU', '$2', $code);
       $fin = preg_replace('#(.+)\[/code\](.+)#isU', '$2', $texte);
    ?>
    (retirer les étoiles)

  3. #3
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Qu'est-ce que tu veux en faire ensuite ?

    Parce qu'il a plusieurs solutions...

    Tu peux par exemple utiliser des combinaisons de strpos puis substr...

    Si c'est pour remplacer les balises par du code HTML, tu peux plutôt utiliser des expressions régulières comme indiqué dans la ... :
    http://php.developpez.com/faq/?page=...es_parsebbcode

    Bref, si tu peux nous en dire plus, on pourra adapter nos réponses

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Gwennin Voir le message
    Problème résolut

    j'ai pensé à la solution quand je venait de poster...

    pour les personnes qui peuvent avoir se problème simple (pas se prendre la tête!!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
       $texte = 'dfdfrgh[code*]<\?php echo "<b>blabla</b>"; ?>[/code*]wfrg';
     
       $debut = substr( $texte, 0, strpos( $texte, '[code*]' ) );
       $code = substr( $texte, 0, strpos( $texte, '[/code*]' ) );
       $code = preg_replace('#(.+)\[code\](.+)#isU', '$2', $code);
       $fin = preg_replace('#(.+)\[/code\](.+)#isU', '$2', $texte);
    ?>
    (retirer les étoiles)
    Tu n'as pas besoin de combiner substr, strpos et preg_replace : tout peut-être fait directement avec preg_replace !

    Pour un exemple, suis le lien donné vers la faq dans mon message précédent

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    rajouter sur le code la fonction highlight_string et remettre le texte en place...

    je n'ai pas mis résolut pour l'instant je continu de la tester...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    J'ai eu raison de ne pas mettre "résolut"...

    avec une seule occurrence c'est bon mais au dessus...



    je crois que j'ai un peut trop cherché cette nuit pour oublier d'insérer un simple boucle... je suis le des ... (a vous de voir)

    En cours de finalisation mais si d'autres solutions existent je suis preneur.

  7. #7
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Si c'est pour faire un remplacement en utilisant une fonction, tu peux probablement utiliser preg_replace_callback à la place de preg_replace, par exemple (non testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    preg_replace_callback('#\[code\](.*)\[/code\]#Usi',
        create_function(
            '$matches',
            'return highlight_string($matches[1], True);'
        ),
        $str);

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    le problème c'est que quand il y a plusieurs balise code il les rassemble.

    pour ma par voila ou j'en suis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
       $texte = '[code*]<\?php echo "<b>blabla</b>"; ?>[/code*]dfrghw[code*]<\?php echo "<b>blabla</b>"; ?>[/code*]frg';
     
     
       $pos = strpos($texte, '[code*]');
       $texte = preg_replace('#(.+)\[code\](.+)\[/code\](.+)#isU', '$1{--}$2{--}$3', $texte);
       $texte = explode('{--}', $texte);
     
       if ($pos == false)
          {
             echo 'c est bon';
          }
       else
          {
             echo 'non';
          }
    ?>

  9. #9
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Gwennin Voir le message
    le problème c'est que quand il y a plusieurs balise code il les rassemble.
    Euh, non... qu'est-ce que tu veux dire par là ?
    De mon côté ça fonctionne plutôt bien (supprimer les espaces en trop avant code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo preg_replace_callback('#\[code\](.*)\[/code\]#Usi',
        create_function(
            '$matches',
            'return highlight_string($matches[1], True);'
        ),
        'blabla [ code]<?php echo $uneVariable; ?>code html[/ code] la suite
           encore... [ code]un autre code <?php echo $variable; ?>
           avec retour à la ligne <?php var_dump($toto) ?>[/ code] la fin');

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    A non excuse moi je me suis trompé...

    j'ai mal utilisé ton scripts...


    C'est bon c'est réglé...
    faut vraiment que j'étudie les regex...
    je les utilisent sans les connaitre

    Problème résolut

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

Discussions similaires

  1. [fonction] fonction pour formatage texte
    Par titiyo dans le forum Delphi
    Réponses: 5
    Dernier message: 29/06/2006, 13h16
  2. fonction taille du texte???
    Par pauligno dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/05/2006, 20h03
  3. HTML: texte autour d'une image
    Par midiweb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 07/02/2006, 10h35
  4. [HTML]Texte autour d'une image
    Par JiJiJaco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/02/2005, 15h35
  5. Texte autour d'une image
    Par C.M dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/12/2004, 11h16

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