Recevoir les caractères entre 2 balises

Bonjour,

Je suis en train de coder un mod pour phpBB et là, j'aimerai bien savoir comment recevoir en php les caractères entre deux balises...
Exemple:
J'ai cette chaine de caractères dans la variable $chaine_debut:
J'ai la chaine ceci est du texte <!-- DEBUTBALISE -->, mais ceci en est encore!<!-- FINBALISE -->

Puis, dans la variable $chaine_voulue est après enregistré:
, mais ceci en est encore!

La chaine dans $chaine_voulue, j'aimerais l'envoyer à une fonction que j'ai créé, donc ubl($chaine_voulue);
Et puis j'aimerai retourner le texte avec un return dans la fonction pour que "mais ceci en est encore!" est après de nouveau dans la variable $chaine_debut, juste modifié par ma fonction.

Merci beaucoup ;)

--
bien cordialement,
Administrateur LOLOSB© productions

11 réponses

  1. nan pour faire le retour dans la balise rien de plus simple quand tu fais ton return de ta fonction tu inclus les balises dedans.

    sinon le preg_match marche comme sa:

    <?php
    
    	$chaine = '<!-- BbcodeUserBackLinkmodSTART -->ici le texte a récupérer<!-- BbcodeUserBackLinkmodEND --> '; // Ta chaine de caractère pas bonne 
    	$pattern = '/<!-- BbcodeUserBackLinkmodSTART -->(.*?)<!-- BbcodeUserBackLinkmodEND -->/'; // Ton expression régulière qui cherche le contenu entre les balises
    	preg_match($pattern, $chaine, $matches); // Le preg_match qui retourne le contenu entre les balise
    	$matches = $matches[0]; // j'écrase le tableau
    	print_r($matches); // J'affiche le resultat
    	
    	taFonctionMagique($matches);
    
    ?>
    
    1
    1. Personne n'a une réponse?

      Merci
      0
      1. Franchement j'ai rien pigé à ce que tu raconte si tu donnais le code je crois que sa irais plus vite.
        0
        1. Ok, :)
          Le problème c'est que j'ai pas de code juste qu'à maintenant...
          Alors c'est en fait simple mon problème:
          J'ai une chaine de caractaires et j'aimerai envoyer un certain texte qui est contenu dans cette chaine entre deux balises à une fonction.
          J'ai trouvé ce code:
              $replace_ubl =  ubl('$1');
              $text = preg_replace('#' . '<!-- BbcodeUserBackLinkmodSTART -->' . '(.*?)' . '<!-- BbcodeUserBackLinkmodEND -->' . '#', $replace_ubl, $text);

          dont $text est la variable avec le texte et <!-- BbcodeUserBackLinkmodSTART --> et l'autre balise sont les balises entre les quels se trouve le texte que je souhaites envoyer à une fonction...
          Est-ce code correct? Car je reçois bien le texte dans ma fonction, mais je ne peux pas le décoder en utf-8...

          Merci
          0
          1. d'accord tu veut récupérer le contenu qui ce trouve entre <!-- BbcodeUserBackLinkmodSTART --><!-- BbcodeUserBackLinkmodEND -->

            Donc pour sa il faut utiliser preg_match pas preg_replace regarde la doc php tu y est presque le plus dur étant l'expression régulière.

            Pour l'encodage des caractère il y a utf8_encode(); et utf8_decode();
            0
            1. Oui oui, pour l'encodage utf-8, j'avais la fonction, mais quelques problèmes...
              Heu.. Pourrais tu me dire s.t.p. comment utiliser le preg_match

              Mais une fois recuppéré le contenu entre les balises, je veux le modifier avec ma fonction et le mettre après de nouveau à la place où il était grace à un return;, ça marche aussi avec cette fonction?

              Merci beaucoup! ;)
              0
              1. Donc si je mets
                $pattern = '/<!-- BbcodeUserBackLinkmodSTART -->(.*?)<!-- BbcodeUserBackLinkmodEND -->/'; 
                	preg_match($pattern, $text, $matches);
                $matches = $matches[0];
                ma_fonction($matches);
                

                j'ai le texte entre les balises dans la variable $matches et je peux mettre dans la fonction p.ex:
                function ma_fonction($texte)
                {
                utf8_encode($texte);
                return '<b>'.$texte.'</b>';
                }
                

                et puis dans la variable $test (du début) il y a
                <b>mon texte</b>
                et plus
                mon texte
                ?

                Merci beaucoup à toi de vouloir m'aider... ;)
                0
                1. oui c'est exactement sa.
                  0
                  1. enfin c'est pas dans la variable que tu aura les balise mais dans le retour de ta fonction

                    exemple :
                    $texte = 'mon texte';
                    echo $texte; // retourne mon texte

                    $texte = ma_fonction($texte);
                    echo $texte; // retourne <b>mon texte</b>

                    function ma_fonction($texte)
                    {
                    $str = utf8_encode($texte);
                    return '<b>'.$str.'</b>';
                    }
                    0
                2. Ahhh, c'est en fait de ça que j'ai eu peur,
                  car la variable $text est définie et j'aimerai remplacer dans cette variable même le texte entre les balises par le texte modifié...
                  Comment peux-je faire celà ?

                  Merci
                  0
                  1. La je t'invite a aller apprendre le php et le html sur le site du zero
                    https://openclassrooms.com/fr/
                    parce qu'a ce rythme tu me donne tes accès et je te le fais ton code.

                    Bon courage c'est pas dur.
                    0
                    1. J'ai appris le php comme l'html :|
                      vu qu'il s'aggit d'une fonction que je cherche, j'ai demandé ici, suite à l'échec de recherche...
                      en haut de ce message, j'ai demandé autant, car je m'en doutais que la fonction n'arrivait pas à faire ce que je voulais.

                      Bonne soirée
                      0