Recevoir les caractères entre 2 balises

lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   -  
lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   -
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. knostra
     
    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
  2. lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   32
     
    Personne n'a une réponse?

    Merci
    0
  3. knostra
     
    Franchement j'ai rien pigé à ce que tu raconte si tu donnais le code je crois que sa irais plus vite.
    0
  4. lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   32
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. knostra
     
    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
  7. lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   32
     
    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
  8. lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   32
     
    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
  9. knostra
     
    oui c'est exactement sa.
    0
    1. knostra
       
      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
  10. lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   32
     
    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
  11. knostra
     
    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
  12. lolosb Messages postés 292 Date d'inscription   Statut Membre Dernière intervention   32
     
    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