Como remover tags html de uma string

5 respostas
A

como faço pra remover tags html de uma string em jsp/java?

em PHP tem a funcao strip_tags, q retorna a string sem nenhuma tag html

strip_tags("<b>Adriano</b>") //retorna Adriano

desde já obrigado

5 Respostas

M

tu pode manter um vetor da vida com as tags html, e pegar essa String como um StringBuffer e varrer esse buffer pra procurar as tags q tu conhece e quer tirar e remover do buffer

M

Salve,

seguindo a mesma linha de raciocínio que o matheus colocou, você pode utilizar a o comando suaString.replaceAll("<br>", “”); para simplificar.

:okok:

A

se eu fizer isso q vc disse, marcos, nao resolve o meu problema, pois só vai remover a tag <br>,

o q eu quero é remover todas as tags html q tiver na string…

seria inviavel fazer uma funcao q procura pelas tags html de uma por uma, eu levaria uma eternidade pra escrever todas, definitivamente usar o replace não é a solucao pra esse caso;

além do mais eu nao sei quais as tags q essa string vai ter, e é isso q a funcao deve fazer: verificar se tem alguma tag e remover…

a funcao strip_tags() do PHP faz isso… pensei q existisse em java uma função q fazia a mesma coisa

vou dar uma pesquisada na api do java no site da sun

mas obrigado pela ajuda, valeu

A

Eu tava precisando dessa função pq to fazendo um livro de visitas e quero impedir q os usuários insiram tags html e códigos javascript.

Eu pesquisei na api do java e não achei nenhuma função q faz isso, então tive q fazê-la eu mesmo. Ela não ficou exatamente do jeito q eu queria mas resolve meu problema, mas de qualquer maneira acho q essa função é muito útil, e vou colocar o código dela aki,

Se alguem se interessar e quiser dar uma revisada e melhorada nessa função seria bom, pq ainda tem alguns problemas, por exemplo, se o cara colocar um texto assim: "<adriano> email taltaltal", "<adriano>" será removido mesmo não sendo uma tag html, e eu queria q só fossem removidas tags válidas... mas eu to sem tempo e paciência pra arrumar.

[email removido] aí vai o código
public String fnStripTags &#40;String str&#41;
&#123;	
	/** 
	 * se encontrar o caracter '&lt;' tag fica true &#40;abertura de tag&#41; 
	 * e tudo q tiver entre os caracteres '&lt;' e '&gt;' será ignorado, 
	 * se for uma tag válida, quando o caracter '&gt;' for 
	 * encontrado tag fica falso &#40;fechamento de tag&#41;...
	 */
	boolean tag = false;
	String novaStr = &quot;&quot;, auxStr = &quot;&quot;;
	
	// varre todos os caracteres a procura de tags html
	for &#40;int i = 0; i &lt; str.length&#40;&#41;; i++&#41; &#123; 
		if &#40;tag&#41; &#123; // tag encontrada
			if&#40;str.charAt&#40;i&#41; == '&gt;'&#41; &#123; // encontrado caracter de fechamento de tag
				tag = false;
				auxStr += str.charAt&#40;i&#41;;					
				novaStr += html&#40;auxStr&#41;; // verifica se é uma tag válida
				auxStr = &quot;&quot;;
			&#125; else if &#40;tag&#41; &#123;
				if&#40;str.charAt&#40;i&#41; == '&lt;'&#41; &#123; // encontrado caracter de abertura de tag
					novaStr += auxStr;
					auxStr = &quot;&quot;;
				&#125; 
				auxStr += str.charAt&#40;i&#41;;
			&#125;	
		&#125; else &#123;
			if&#40;str.charAt&#40;i&#41; == '&lt;'&#41; &#123; // encontrado caracter de abertura de tag
				auxStr += str.charAt&#40;i&#41;;
				tag = true;
			&#125; else &#123;
				novaStr += str.charAt&#40;i&#41;; // string sem as tags html
			&#125;
		&#125;
		
		// caso seja achado '&lt;' sem achar '&gt;'
		if&#40;tag &amp;&amp; i == &#40;str.length&#40;&#41; - 1&#41;&#41; &#123;
			novaStr += auxStr;
		&#125;
	&#125;
	return novaStr;
&#125;

// verifica se o conteude de str é uma tag html válida
public String html&#40;String str&#41; 
&#123;
	boolean found = false;
	String&#91;&#93; tags = &#123;&quot;A&quot;, &quot;ADDRESS&quot;, &quot;APPLET&quot;, &quot;AREA&quot;, &quot;B&quot;, &quot;BASE&quot;, &quot;BASEFONT&quot;, &quot;BIG&quot;, &quot;BLOCKQUOTE&quot;,
					&quot;BODY&quot;, &quot;BR&quot;, &quot;CAPTION&quot;, &quot;CENTER&quot;, &quot;CITE&quot;, &quot;CODE&quot;, &quot;DD&quot;, &quot;DFN&quot;, &quot;DIR&quot;, &quot;DIV&quot;, 
					&quot;DL&quot;, &quot;DT&quot;, &quot;EM&quot;, &quot;FONT&quot;, &quot;FORM&quot;, &quot;FRAME&quot;, &quot;FRAMESET&quot;, &quot;H1&quot;, &quot;H2&quot;, &quot;H3&quot;, &quot;H4&quot;, 
					&quot;H5&quot;, &quot;H6&quot;, &quot;HEAD&quot;, &quot;HR&quot;, &quot;HTML&quot;, &quot;I&quot;,&quot;IMG&quot;, &quot;INPUT&quot;, &quot;ISINDEX&quot;, &quot;KBD&quot;, &quot;LI&quot;, &quot;LINK&quot;, 
					&quot;MAP&quot;, &quot;MENU&quot;, &quot;META&quot;, &quot;NOBR&quot;, &quot;NOFRAMES&quot;, &quot;OBJECT&quot;, &quot;OL&quot;, &quot;OPTION&quot;, &quot;P&quot;,&quot;PARAM&quot;, &quot;PRE&quot;, 
					&quot;SAMP&quot;, &quot;SCRIPT&quot;, &quot;SELECT&quot;, &quot;SMALL&quot;, &quot;SPAN&quot;, &quot;STRIKE&quot;, &quot;S&quot;,&quot;STRONG&quot;, &quot;STYLE&quot;, &quot;SUB&quot;, &quot;SUP&quot;, 
					&quot;TABLE&quot;, &quot;TD&quot;, &quot;TEXTAREA&quot;, &quot;TH&quot;, &quot;TITLE&quot;, &quot;TR&quot;, &quot;TT&quot;, &quot;U&quot;,&quot;UL&quot;, &quot;VAR&quot; &#125;;
	
	for &#40;int i =0; i &lt; tags.length; i++&#41; &#123;
		if &#40;str.indexOf&#40;&quot;&lt;&quot; + tags&#91;i&#93;&#41; != -1 || // se tem &lt;tag
			str.indexOf&#40;tags&#91;i&#93; + &quot;&gt;&quot;&#41; != -1 ||	// se tem tag&gt;
			str.indexOf&#40;&quot;&lt;&quot; + tags&#91;i&#93;.toLowerCase&#40;&#41;&#41; != -1 || // se tem &lt;tag maiusculo				
			str.indexOf&#40;tags&#91;i&#93;.toLowerCase&#40;&#41; + &quot;&gt;&quot;&#41; != -1&#41; &#123; // se tem tag&gt; maiusculo
			found = true;
		&#125;			
	&#125;
	
	if &#40;found&#41; return &quot;&quot;;
					
	return str;
&#125;
J

Lekes, uma regex mata isso fácil fácil !!!

Em Javascript:
<*>

Em Java:
<.*>

essa regex vai casar tudo que estiver dentro das < >.

Criado 22 de junho de 2005
Ultima resposta 30 de set. de 2013
Respostas 5
Participantes 4