Supprimer les balises HTML d'une string en javascript

Supprimer les balises HTML d'une string en javascript - HTML/CSS - Programmation

Marsh Posté le 04-11-2008 à 13:49:10    

Bonsoir à tous,
 
J'essaie de supprimer les balises HTML contenue dans une string :
 

Code :
  1. lecontenu="ma <b>chaine</b> pleine <i>de</i> de balises HTML";
  2. reg=new RegExp("<+.*>+", "gi" );
  3. lecontenu=lecontenu.replace(reg, "" );


 
Mais ça marche pas (faut dire que je comprend rien aux expressions régulières :))
 
Merci de votre aide :p


Message édité par zezette le 04-11-2008 à 13:50:27

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 04-11-2008 à 13:49:10   

Reply

Marsh Posté le 04-11-2008 à 17:11:29    

C'est normal que tu aies des problèmes car il va remplacer tout ce qui se trouve entre le premier < ouvrant, et le dernier > fermant.

 

en gros :  
ma <b>chaine</b> pleine <i>de</i> de balises HTML   : d'après ta regexp, entre les deux balises soulignées, tout disparaît.

 


Pour contrer ce problème tu dois lui dire que tout peut se trouver au sein des balises, sauf la balise fermante bien sûr ! :

 
Code :
  1. reg=new RegExp("<.[^>]*>", "gi" );
 


Et sinon, si as encore affaire aux regexp, je te conseille un site comme regular-expressions.info, ça contient toute l'info dont tu as besoin :)


Message édité par ZeBix le 04-11-2008 à 17:15:52
Reply

Marsh Posté le 04-11-2008 à 19:08:58    

génial, je teste ca demain :)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 05-11-2008 à 08:32:28    

Ca marche ! Mais comme je suis difficile, je voudrais que si après < il y a un espace, on ne le rempalce pas (car ce n'est plus une balise, mais simplement un plus petit que :)
 
exemple : <strong>5</strong> < <i>10</i>
donne : 5 10
mais devrait donner : 5 < 10


Message édité par zezette le 05-11-2008 à 08:32:37

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 05-11-2008 à 10:56:24    

Oh, ben tu inclus la balise ouvrante dans la classe d'exception :
 

Code :
  1. reg=new RegExp("<.[^<>]*>", "gi" );


(à tester cependant, je ne suis pas 100% sûr du résultat)
 
 
A noter cependant qu'il est préférable de "parser" un texte avant la publication et de remplacer les "plus petits" et "plus grands" qui ne sont pas des balises, par leur "entité html" , à savoir respectivement "&lt;" et "&gt;"

Reply

Marsh Posté le 05-11-2008 à 11:24:22    

quel est l'intéret de supprimer le HTML d'une string ?
Si c'est parce que tu récupères le innerHTML d'un HTML element et que tu veux ne récupérer que le texte, il te suffit de récupérer seulement le innerText ou textContent (selon le navigateur)

Code :
  1. function getText(input) {
  2.    return input.innerText || input.textContent;
  3. }

Reply

Marsh Posté le 05-11-2008 à 12:22:25    

ZeBix a écrit :

Oh, ben tu inclus la balise ouvrante dans la classe d'exception :
 

Code :
  1. reg=new RegExp("<.[^<>]*>", "gi" );


(à tester cependant, je ne suis pas 100% sûr du résultat)
 
 
A noter cependant qu'il est préférable de "parser" un texte avant la publication et de remplacer les "plus petits" et "plus grands" qui ne sont pas des balises, par leur "entité html" , à savoir respectivement "&lt;" et "&gt;"


 
J'y croyais pas trop, mais ça marche !  
 
Merci bcp ;)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 05-11-2008 à 15:43:49    

De rien :jap:

Reply

Marsh Posté le 04-07-2011 à 21:53:40    

Voici une fonction JavaScript qui permet d'enlever les balises HTML d'une chaine :

Code :
  1. function strip_tags(html)
  2. {
  3. //PROCESS STRING
  4. if(arguments.length < 3) {
  5.  html=html.replace(/<\/?(?!\!)[^>]*>/gi, '');
  6. } else {
  7.  var allowed = arguments[1];
  8.  var specified = eval("["+arguments[2]+"]" );
  9.  if(allowed){
  10.   var regex='</?(?!(' + specified.join('|') + '))\b[^>]*>';
  11.   html=html.replace(new RegExp(regex, 'gi'), '');
  12.  } else{
  13.   var regex='</?(' + specified.join('|') + ')\b[^>]*>';
  14.   html=html.replace(new RegExp(regex, 'gi'), '');
  15.  }
  16. }
  17. //CHANGE NAME TO CLEAN JUST BECAUSE  
  18. var clean_string = html;
  19. //RETURN THE CLEAN STRING
  20. return clean_string;
  21. }


 
Source : http://www.stemkoski.com/what-is-j [...] trip_tags/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed