Partage
  • Partager sur Facebook
  • Partager sur Twitter

Expression régulière

Supprimer les caractères entre [ ]

    28 novembre 2005 à 23:52:34

    Hello tout le monde!

    Je cherche une expression régulière pour supprimer tous les caractères entre [] ainsi que ces derniers caractères.

    Exemple:

    Du texte [blabla] encore du texte

    Je voudrais obtenir

    Du texte encore du texte

    Merci a celui qui saura m'aider
    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2005 à 0:21:02

      Essaye ceci (j'suis pas tout a fait sur!!!)


      $texte = 'Du texte [blabla] encore du texte';

      $texte = preg_replace("`\[(.*)\]`isU","",$texte);

      // Pour tester
      echo ''.$texte.'';
      • Partager sur Facebook
      • Partager sur Twitter
      Erreur PDO - Installation Wamp - Docs PHP et MYSQL.
        29 novembre 2005 à 7:58:55

        Tout dépend de la config et de la chaine à analyser, mais on pourrait très bien le faire sans regex.

        substr(), strpos(), strrchr() et autre fonctions apparentées.

        Citation : b-dav

        // Pour tester
        echo ''.$texte.'';



        Pourquoi tu fais une telle manoeuvre pour afficher une variable avec echo ?
        Faut juste faire :
        echo $texte; ;)
        • Partager sur Facebook
        • Partager sur Twitter
          29 novembre 2005 à 14:07:27

          Je savais bison que je te retrouverai sur ce topic!

          J'ai une autre question now:

          je veux supprimer d'une chaine $chaine tout ce qui contient [/intro] c'est a dire que [/ ou [/i ou meme [/in soit effacé, comment faire?
          • Partager sur Facebook
          • Partager sur Twitter
            29 novembre 2005 à 16:28:31

            Citation : zim

            Je savais bison que je te retrouverai sur ce topic!

            J'ai une autre question now:

            je veux supprimer d'une chaine $chaine tout ce qui contient [/intro] c'est a dire que [/ ou [/i ou meme [/in soit effacé, comment faire?



            Bah avec str_replace() éventuellement.
            Mais bon, donne un exemple concret juste pour voir le contexte.
            • Partager sur Facebook
            • Partager sur Twitter
              29 novembre 2005 à 16:39:58

              Tres compliqué d'expliquer le contexte et la volonté de faire ceci...

              Mais dans $chaine, j'ai du texte, et [/intro] ou [/ ou [/intr etc

              et je veux retrouver ceci dans ma chaine $chaine, pour le supprimer...

              Ensuite, j'ai une question...

              Je voudrais remplacer {pub} par <? include "./pub/fichier.php"; ?> mais avec preg replace, sa ne fonctionne pas...

              • Partager sur Facebook
              • Partager sur Twitter
                29 novembre 2005 à 16:45:11

                Citation : zim

                Tres compliqué d'expliquer le contexte et la volonté de faire ceci...

                Mais dans $chaine, j'ai du texte, et [/intro] ou [/ ou [/intr etc

                et je veux retrouver ceci dans ma chaine $chaine, pour le supprimer...

                Ensuite, j'ai une question...

                Je voudrais remplacer {pub} par <? include "./pub/fichier.php"; ?> mais avec preg replace, sa ne fonctionne pas...



                Attends, si faire des regex c'est vraiment mon truc, pour faire de la voyance j'y connais que dalle.
                Remarque si un peu quand même... et je peux te prédire sans me tromper que, sans infos valides, tu ne recevras pas de réponse valable.
                • Partager sur Facebook
                • Partager sur Twitter
                  29 novembre 2005 à 16:53:57

                  Il te manque quoi?

                  L'application précise pour l'histoire de trouver [/intro et le supprimer:

                  J'ai fait un system de BBcode a moi pour mon system de publication, sur l'accueil, je met un extrait de l'article (les 150 premier caractère) avec substr...

                  Ensuite, j'ai une fonction undo_phpBB, mais si la fin de l'extrait se trouve au milieu d'une balise phpBB ma fonction pour virer les balises (pour virer [*] (le wildcard remplacant le contenu de la balise) ne fonctionne alors pas. D'ou l'objet de ma demande.

                  Ensuite, dans mon system de publication, je voudrais que quand je rédige de long articles, placer de la pub uniquement si j'ai envie (placer la publicité uniquement si l'articles est assez long par exemple, mais c'est selon mon appréciation).
                  D'ou le besoin donc, de pouvoir remplacer un tag par exemple [pub] par une include.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 novembre 2005 à 17:01:48

                    Citation : zim

                    Il te manque quoi?

                    Citation : zim

                    Mais dans $chaine, j'ai du texte, et [/intro] ou [/ ou [/intr etc



                    Simple, il me manque le etc

                    [/intro] est-il le seul mot possible entre les crochets ????
                    Quel est le motif le plus court ?
                    Quel est le motif le plus long ?
                    Quelles sont les options intermédiares ?

                    Tu me suis là ????? :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 novembre 2005 à 17:18:48

                      Ahhh

                      Excuse moi je n'avais pas compris:

                      le motif le plus long est [/intro]

                      le plus cours est [/ et les options intermédiaire:

                      [/
                      [/i
                      [/in
                      [/int
                      [/intr
                      [/intro
                      [/intro]

                      Voila, je t'ai suivie sur ce coup je pense lol
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 novembre 2005 à 18:10:03

                        Si je te suis sur l'idée de ton premier post, ça doit donner ça :
                        <?php
                        $ch='Du texte [blabla] encore du texte';
                        $ch=preg_replace('`\[/?[^]]*]`','',$ch);
                        echo $ch;
                        ?>

                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 novembre 2005 à 18:40:02

                          Dans ma fonction undo_phpBB, j'ai ceci:

                          $chaine = preg_replace("'<br.*?>'si"," ",$chaine);
                          $chaine = preg_replace("`\[(.*)\]`isU","",$chaine);
                          $chaine = preg_replace('`\[/?[^]]*]`','',$chaine);

                          Mais dans ma chaine, il persiste les [/* (je ne te refais pas la liste, le wildcard remplace intro et ses dérives)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 novembre 2005 à 18:48:04

                            Citation : zim

                            Dans ma fonction undo_phpBB, j'ai ceci:


                            PhpBB, tu m'en dira tant !
                            Ecoute, franchement sans un exemple concret de chaine, on va pas y arriver.
                            La portion de code que j'ai donnée avant avec ton exmple, ça fonctionne j'ai testé.

                            Citation : zim

                            $chaine = preg_replace("'<br.*?>'si"," ",$chaine);
                            $chaine = preg_replace("`\[(.*)\]`isU","",$chaine);


                            Pour le br je peux comprendre mais les crochets vides ou remplis par n'importe quoi, ça m'échappe.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 novembre 2005 à 18:57:19

                              la fonction c'était undo_bbcode lol excuse, je suis fatigué.

                              $chaine = preg_replace("`\[(.*)\]`isU","",$chaine);

                              cela sert a remplacer [nimporte quoi] ou meme [quelquechose] par rien du tout!

                              $chaine = preg_replace("'<br.*?>'si"," ",$chaine);
                              Cela sert a supprimer les balises <br> ou <br />

                              Tout ceci fonctionne.

                              Bon ensuite quand je rajoute:

                              $chaine = preg_replace('`\[/?[^]]*]`','',$chaine);
                              dans ma fonction

                              et que je souhaite traiter:

                              $chaine = "[intro] Introduction de l'article en quelques lignes [/intro]";

                              La, il n'y a pas de probleme quand je traite cette chaine avec ma fonction, j'ai:

                              Introduction de l'article en quelques lignes

                              Mais si ma chaine est:

                              $chaine = "[intro] Introduction de l'article en quelques lignes [/in";

                              Quand je passe traite chaine avec ma fonction undo_bbcode, j'ai:

                              Introduction de l'article en quelques lignes [/in

                              Est ce que j'ai été assez claire?

                              En tout cas merci @ toi de prendre le temps de me lire et de m'aider!
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Expression régulière

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown