J'ai une chaîne soumise par l'utilisateur contenant du contenu HTML tel que
"<p>Hello<br/>world</p>"
5 Réponses :
Pas vraiment familier avec JSOUP, mais vous pouvez le faire avec une simple regex remplacer: bien qu'avec un analyseur complet, vous pouvez probablement laisser tomber le contenu vide pendant le traitement, en fonction de ce que vous avez 'réelle finalement faire avec ça. p> p>
remplacement ("<[A-ZA-Z0-9] *> [A-ZA-Z0-9] *>", ""); Peut-être mieux que de laisser autre chose que>
Mais qu'en est-il de italique i> audacieux b>? C'est mauvais usage, mais toujours légitime. Je dois être capable de répliquer exactement ce qui a été utilisé dans le premier ensemble de crochets d'angle.
@Pragalathanm, j'ai envisagé cela, mais les balises permettent également des traits d'union, des traits de soulignement, etc. Une fois que vous avez commencé à ajouter tous ces personnages, la déclaration commence à être laidée (et vous risquez de manquer).
@Frankieethekneeman: italique i> gras b> n'est pas légal dans HTML.
Cette solution ne fonctionnera que pour p> code>, pas pour p> code> qui sont équivalents.
code> ou
Si vous utilisez jQuery, vous pouvez le faire comme violon: http://jsfiddle.net/lqcx5/2/ p> p>
Mise à jour de la réponse .. Pls check, sa fonctionnement bien que j'ai testé dans ma machine.
Cela supprimera toutes les étiquettes vides, y compris
Nope mec .. Vous devriez revenir au Downvote ... sa non-retirant
. > jsfiddle.net/lqcx5/3 ... Vérifiez la sortie du corps, bonjour et monde en ligne différentes.
Ne connais pas le JSOUP, ci-dessous fonctionne également avec une simple regex JavaScript. Essayez le code ci-dessous.
function removeall(){ var tagarray=new Array("<p>","<div>"); source="<p></p><div></div><p>Hello<br/>world</p><p></p>"; for ( var int = 0; int < tagarray.length; int++) { tag2=tagarray[int].replace("<","</"); var tagpair=new RegExp(tagarray[int]+tag2,"g"); source=source.replace(tagpair,""); } alert(source);
C'est une question Java, alors le code JavaScript n'est donc pas une réponse valide.
JSOUP rendra correct XML à partir de l'entrée d'utilisateur HTML. Utilisez XML Parser pour trouver et supprimer toutes les balises vides. Je pense que c'est une meilleure idée que Regexp. Regardez ici: Java Supprimer les tags XML vides Vous pouvez également utiliser JSoup pour trouver des balises vides pour vous. Regardez ici: http://jsoup.org/Cookbook/extractting-data/selector-syntax et utiliser la méthode node.remove (). P>
Voici un exemple qui ne fait que cela (à l'aide de JSOUP): La sortie du code ci-dessus est ce que vous recherchez: p>
Je l'ai testé et le code ci-dessus imprime bonjour
J'ai remarqué que ce code retire l'IMG vide à l'intérieur d'un Div Ex:
Je pense que ce serait plus correct si l'instruction
Comment puis-je supprimer une balise vide ??
@Mark: Le principal problème avec votre approche sont les étiquettes de fermeture automatique. Vous filtrerez aussi bien
World P> code>
div> donc j'ai vérifié pour la taille vide aussi: && élément.childnodes (). Taille () == 0, Ma mise à jour correcte?
si code> est comme suit ceci:
si (((((element.hastext () && élément.isblock ()) || (! Element.hastext () && element.childnodes (). Isefty ())) element.remove () code> car il élimine également les éléments non bloquants qui sont vides, tels que
span> CODE> CODE>
code> qui devrait être conservé!