Page 1 sur 1

Supprimer balises HTML

Posté : 04 mai 2008, 11:10
par cicom
Bonjour à tous!
Ca faisait longtemps que je n'étais pas venu vous poser des questions (bon faut dire aussi en ce moment j'ai pas trop eu le temps de programmer...)
Alors dans le cadre de génération de flux RSS via PHP à partir d'une base de données j'aimerai savoir comment supprimer tout ce qui ressemble de près ou de loin à du html dans un texte.
J'ai bien dit supprimer et non quoter ou remplacer comme le feraient des fonctions type htmlentities()
Je pense qu'on peut faire ca en regex en supprimant tout ce qui est entre < et > les < et > compris mais je ne suis pas très fort en regex alors je viens demander votre aide, de plus, conscient qu'il ne faut pas réinventer la roue, je suis sûr que beaucoup d'entre vous s'y sont déjà penché...
Merci à tous!

Posté : 04 mai 2008, 11:48
par katagoto
Il me semble, qu'avec un bon parseur c'est facilement réalisable...
Par contre je ne me souvient plus où je l'ais vu ><

Posté : 04 mai 2008, 12:04
par cicom
Salut,
Si tu mets la main (ou la souris) sur le lien en question n'hésite pas à le poster ici.
Si certains se rappellent de la méthode même recommandation.
Merci à tous!

Posté : 04 mai 2008, 12:33
par Cyrano
strip_tags() devrait être ta solution la plus simple :-k

Posté : 04 mai 2008, 13:35
par SpintroniK
Salut,

j'ai le souvenir d'un début de parseur HTML ici :
http://www.fpdf.org/fr/tutorial/tuto6.htm

évidemment, il est à modifier et à compléter, mais comme début c'est déjà pas mal !
Il y a aussi des compléments dans les scripts exposés sur le site fpdf.org

Posté : 04 mai 2008, 14:43
par cicom
Salut,
Toujours aussi bon Cyrano! Exactement ce qu'il me fallait.
Merci à tous de m'avoir aidé je mets résolu.

Posté : 05 mai 2008, 16:03
par nicolas
strip_tags() devrait être ta solution la plus simple :-k
Tu fais bien de douter. Ce n'est évidemment pas la bonne solution.
<?php
$texte = 'du texte avec un mot <b>en gras</b> et 3>2 et 5<4 <b> et la fin';
echo strip_tags($texte);
?>
affiche:
du texte avec un mot en gras et 3>2 et 5

La seule solution valable est à coup d'expression régulière. preg_replace() est ton amie.

Posté : 05 mai 2008, 16:18
par Cyrano
Effectivement, ce cas poserait problème. Je dois dire que je ne me suis jamais trop posé la question parce que j'utilise systématiquement les entités HTML pour des symboles comme < ou > en mettant > ou < précisément pour éviter ce type de conflit. :-k

Posté : 05 mai 2008, 20:09
par cicom
Salut,
Merci de votre précision mais j'utilise ça juste pour générer un flux rss à partir de news stockées dans la bdd, donc rien de très compliqué, aussi je ferai attention à ne pas utiliser de < ou de > dans mes news.
Merci à tous!

Posté : 05 mai 2008, 21:11
par Cyrano
...j'utilise ça juste pour générer un flux rss
Donc un format XML : dans ce cas les entités HTML seront d'autant plus appropriées :)

Posté : 05 mai 2008, 21:32
par cicom
Re,
Pourquoi ça?
Merci

Posté : 05 mai 2008, 22:25
par Cyrano
Pour une question de conformité avec la syntaxe XML. Certains caractères doivent être inclus sous la forme d'entités HTML : ainsi < s'écrira <, > sera écrit >, etc... et tu as en PHP la fonction htmlentities() qui fait ça très bien, à utiliser après striptags() évidemment :)

Posté : 06 mai 2008, 20:34
par cicom
Salut,
Ah c'était donc ça l'astuce! Je me suis cassé àfaire un convertisseur pour les accents et les br en preg replace etc etc pour que ca passe en xml, ok je note ca me sera surement utile merci!