Se connecter / S'enregistrer
Votre question

PHP/XML comment supprimer les balises HTML

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
3 Septembre 2010 21:01:28

Bonsoir à tous,

J'ai fait réaliser un petit script qui extrait des données de ma BDD mySQL.
Ce dernier génère un fichier avec une extension .xml contenant les éléments suivants, " Titre, Description, URL annonce, Url photo, Prix, Localité "

Malheureusement au niveau de la description j'ai un gros soucis avec les balises HTML .. Les descriptions des articles présents sur mon site, sont pour la plupart mis en page avec du HTML et toutes les balises se retrouvent sur mon fichier XML, hors qu'il aurait fallu faire en sorte d'éliminer les balises HTML pour ne sortir que du texte brute.

Existe t'il une formule "miracle" et pas trop compliquée à mettre en place pour que mon fichier de sorti XML soit débarrassé des balises HTML ?

Merci par avance pour votre aide.

:hello: 

Autres pages sur : php xml supprimer balises html

4 Septembre 2010 03:04:04

Bonjour,

utilise les regex de PHP pour récupérer ton info et la modifier pour la débarrasser de tout code inutile. Voir ici.

Avec ca tu devrais t'en sortir :) 
@+
m
0
l
4 Septembre 2010 10:29:24

Bonjour DivX_666,

Merci pour le lien, je vais potasser ça, malgré que la programmation ne soit pas trop mon domaine :pt1cable: 

Bonne journée
m
0
l
Contenus similaires
a c 145 L Programmation
5 Septembre 2010 11:53:55

Si tu veux supprimer tout ce qui est balise html, il suffit de faire:
  1. $string = preg_replace('!<[^>]+>!', '', $string);

Il faudra peut-être jouer avec les flags de l'expression pour le multilignes.
m
0
l
5 Septembre 2010 17:19:36

Bonjour Crazycat@idn,

J'ai potassé un peu les explications sur le site du zéro mais c'est hard et aussi mis en place ta fonction, mais sans résultat.
Ma description sur mon fichier .php apparait comme ceci

<description>'.$row['description'].'</description>

J'ai beau placer du code, avant, après, rien ne se passe :wahoo: 

A+
m
0
l
6 Septembre 2010 01:14:42

Essai ca avec la formuler de CrazyCat :

$row['description'] = preg_replace('!<[^>]+>!', '', $row['description']);
<description>'.$row['description'].'</description>
m
0
l
a c 145 L Programmation
6 Septembre 2010 09:00:52

Je serais tout de même d'avis de ne pas modifier directement ce qui vient de la base de données, donc:
  1. $description = preg_replace('!<[^>]+>!Um', '', $row['description']);
  2. echo '<description>', $description, '</description>';
m
0
l
7 Septembre 2010 20:07:41

Hello,

Et bien ce n'est pas gagné mon affaire, avec les codes proposés j'ai des erreurs :( 
avec htmlspecialchars() je n'ai pas plus de résultat, mais la encore il est fort possible que je ne mette pas le code au bon endroit.

Mon fichier complet est à cette adresse, il sera certainement plus simple de voir le code en entier http://www.megaupload.com/?d=LNT4VZGV

Merci par avance de votre coup de main !

++
m
0
l
a c 145 L Programmation
8 Septembre 2010 09:36:52

andrelec1 a dit :
pourquoi ne pas utilisé htmlspecialchars() ???
http://www.php.net/manual/fr/function.htmlspecialchars....

Parce qu'il veut retirer les balises html et pas convertir les caractères "spéciaux" en entitées html, non ?

dudulix a dit :
Et bien ce n'est pas gagné mon affaire, avec les codes proposés j'ai des erreurs :( 

Quelles erreurs ? Ca peut aider à comprendre.

Merci de ne pas utiliser megaupload pour envoyer un symple fichier php.
N'ayant pas ta base de données, donc tes contenus, j'ai fait dans ton code les modifs qui me semblaient logique: http://pastebin.com/wjsyv9aY

Tu noteras donc l'utilisation du preg_replace et l'ajout d'un <![CDATA[ ... ]]>
m
0
l
8 Septembre 2010 12:40:22

Hello,

Désolé pour megaupload, j'ai en fait pris le premier qui me passait par la tête.
Pour les erreurs elles étaient de type parse error, donc certainement une guillemet ou un point virgule mal placé.

Merci de t'être penché sur mon fichier, que je me suis empressé de mettre en place, mais hélas j'ai toujours le même résultat au niveau de la description et des balises html.

Ci-dessous un extrait du fichier xml généré pour la partie description
  1. <br><p><span style='font-weight: bold; font-size: 16pt;'>Un russissant anglais au 16e-17e siècle. Richard James. (1592-1638). </span></p><br><p><span style='color: rgb(72, 61, 139); font-weight: bold; font-size: 12pt;'>Référence stock:</span> 21481</p><p><span style='color: rgb(128, 0, 0); font-weight: bold; font-size: 12pt;'>Auteur: </span> PSALMON Frédéric</p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Commentaires Bibliographiques: </span> Article extrait du Bulletin de Géographie Historique et Descriptive. </p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Préface / Traducteur / Illustrateur: </span> </p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Éditeur: </span> </p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Collection: </span> </p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Année: </span> 1911. </p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Description / État: </span> Broché. 54 pages. Couverture factice. Petite déchirure en bas de page. </p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>Thèmes de l'ouvrage: </span> LANGUE-LINGUISTIQUE,RUSSIE</p><p><span style=' font-weight: bold; font-size: 12pt; color: rgb(128, 0, 0);'>ISBN: </span> </p><br><br>


il est tenace le html :D 

je continu de mon coté à faire des modifs, un peu à l'aveuglette.

++
m
0
l
8 Septembre 2010 17:09:01

Hi,

Bien en faite c'est ceci que je souhaiterai avoir,

  1. Un russissant anglais au 16e-17e siècle. Richard James. (1592-1638).
  2. Référence stock: 21481
  3. Auteur: PSALMON Frédéric
  4. Commentaires Bibliographiques: Article extrait du Bulletin de Géographie Historique et Descriptive.
  5. Préface / Traducteur / Illustrateur:
  6. Éditeur:
  7. Collection:
  8. Année: 1911.
  9. Description / État: Broché. 54 pages. Couverture factice. Petite déchirure en bas de page.
  10. Thèmes de l'ouvrage: LANGUE-LINGUISTIQUE,RUSSIE
  11. ISBN:


uniquement du texte, dépourvu de balises html ou autres mises en formes
m
0
l
8 Septembre 2010 19:05:27

Bizarre, vous avez dit bizarre :heink: 
m
0
l
8 Septembre 2010 20:07:58

voila se que j'ai en sortie de monfichier.xml

m
0
l
a c 145 L Programmation
9 Septembre 2010 08:58:48

Une question totalement stupide: est-ce que ce qui est enregistré en base ne serait pas converti en entitées html ?
Si oui, il faut faire un html_entity_decode() sur la description pour que ça fonctionne.
Essaye avec le code qui est à http://pastebin.com/rppfB3qX
m
0
l
9 Septembre 2010 12:32:30

Salut crazycat@idn,

Ca fonctionne beaucoup plus mieux meilleur .. MERCI INFINIMENT !

par contre mes apostrophes et certains caractères accentués ne s'affichent pas correctement, et en modifiant le charset en UTF-8 cela provoque une Erreur d'analyse XML : mal formé

réalisateur
n’ ;a
d'emballage

alors j'ai donc essayé d'inclure ce petit monde dans preg_replace
vous imaginez déjà le résultat :D 
m
0
l
a c 145 L Programmation
9 Septembre 2010 12:41:42

Surtout pas dans le preg_replace !
Je suis étonné pour le é qui devrait normalement être transformé en "é" par le html_entity_decode()...
Quoi qu'il en soit, il faudrait ajouter une ligne, après le $description = preg_replace(...); :
  1. $description = str_replace(array('é', '’', '''), array("é", "'", "'"), $description);
m
0
l
9 Septembre 2010 14:38:34

SUPER, d'ailleurs il y avait également les caractères ci-dessous qui ne passaient pas
& #8217;
& nbsp;
& #65533;½'
& Eacute;
& amp;
là c'est dans mes cordes au niveau de la compréhension, j'ai ajouté les caractères manquants à la suite dans le code :) 

Il me reste 3 - 4 soucis à régler sur ce fichier, mais je ne voudrais pas abuser non plus de ton temps et de ta gentillesse.

++
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS