[php] Supprimer d'une sous chaine à une autre

Bonjour,

J'ai un problème. Imaginons que j'ai devant moi un texte criblé de balises html. J'aimerais en retirer uniquement le texte brut.

Connaissez vous une fonction qui permet, dans une chaine, de supprimer une sous chaine contenue entre un caractère et un autre. Par exemple imaginons:

$chaine="O fière voûte celeste! Que mire-je? Sont-ce des <b>salsifis</b> qui scintillent  ainsi par delà les <i>cieux</i>?";


Et là j'aimerais zapper les balises
<b>
et
<i>
grâce à une fonction qui pourrait par exemple supprimer toute partie commençant par < et se terminant par >.

Voilà, merci d'avance.

Kilian, débutant en tâche de fond.....

8 réponses

  1. Contributeur
    regardes du coté des expressions réguliéres, tu ne récupéreras q ce qui t'interresse. J'ai oublié les noms des fcts.

    tafiscobar "lou waye def bopame"
    la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
    0
    1. Modérateur
      Ah oui, je connaissais pas ces trucs là tiens....
      Bon là j'ai mal à la tête à force de regarder les expressions régulières, j'irais revoir ça plus tard.

      Merci en tout cas :-)

      Kilian, débutant en tâche de fond.....
      0
      1. Modérateur
        Rebonjour,

        Pour m'entrainer aux expressions régulières, j'essaie de construire un "ereg_replace()"qui jouerait le même rôle que strip_tags(), c'est à dire supprimer les balises html dans un texte, mais ça n'affiche rien à l'écran. Voici mon code:

        <?
        $source_html="n'importe quelle source";
        
        $expression="(<{1,1})(([[:print:]]|[[:space:]])*)(>{1,1})";
        
        echo ereg_replace($expression,"",$source_html);
        
        ?>


        Voilà, voilà. Merci d'avance....
        0
        1. Je suis pas sur mais essaye une expression comme ca:

          $expression="<[^>]*>";
          0
          1. Salut,

            Ben ça marche... Mais j'ai pas bien compris ton système:
            =>on autorise la balise "<" puis on interdit tous les ">" et enfin la chaine doit se terminer par ">".....

            Je pensais qu'avec un truc de ce genre, toute la chaine serait zappée de la première balise ouverte à la dernière balise fermée...
            J'ai encore du mal avec les expression régulières.

            Merci beaucoup GallyNet...
            0
            1. Et ben en fait tu peut dire que la chaine que tu recherche peut être divisé ainsi:

              commence par un '<'
              finit par un '>'
              et au milieu tu as tout le texte que tu veut sauf '>'

              ce qui donne l'expression régulière que je t'ai donné. :-)
              Personnelement, ce doit être la seul chose que j'ai compris sur les expression régulière.

              D'ailleur il existe un générateur d'expression régulière. Je connais pas son nom mais je l'utilise (sous KDE) quand je fait une recherche d'un fichier par rapport à son contenu.
              0
              1. bonjour,
                j'ai essayé cette expression reguliere mais comme d'autres que j'ai faites ou des fonctions que j'ai utilisees, elles ne semblent pas toucher les balises images car celles-ci s'affichent malgre tout. D'où cela peut-il venir ?
                0
            2. Oki, ça doit être utile le générateur mais je préfère apprendre à le faire tout seul.
              Merci pour l'astuce et l'explication ;-)
              0