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

kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   -  
 mycha -
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.....
A voir également:

8 réponses

tafiscobar Messages postés 1277 Date d'inscription   Statut Contributeur Dernière intervention   177
 
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
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
J'ai trouvé un fonction toute faite pour ce que je veux faire: strip_tags():
http://php.planetmirror.com/manual/fr/function.strip-tags.php

Mais je vais de toutes façon avoir besoin des expressions regulières très bientôt :-)

Kilian, débutant en tâche de fond.....
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GallyNet Messages postés 434 Date d'inscription   Statut Membre Dernière intervention   387
 
Je suis pas sur mais essaye une expression comme ca:

$expression="<[^>]*>";
0
kilian
 
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
GallyNet Messages postés 434 Date d'inscription   Statut Membre Dernière intervention   387
 
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
mycha
 
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
kilian
 
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