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
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
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
Salve,
seguindo a mesma linha de raciocínio que o matheus colocou, você pode utilizar a o comando suaString.replaceAll("<br>", “”); para simplificar.
:okok:
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
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.
adriano@praxys.com.br
aí vai o código
[code]public String fnStripTags (String str)
{
/**
* se encontrar o caracter ‘<’ tag fica true (abertura de tag)
* e tudo q tiver entre os caracteres ‘<’ e ‘>’ será ignorado,
* se for uma tag válida, quando o caracter ‘>’ for
* encontrado tag fica falso (fechamento de tag)…
*/
boolean tag = false;
String novaStr = “”, auxStr = “”;
// varre todos os caracteres a procura de tags html
for (int i = 0; i < str.length(); i++) {
if (tag) { // tag encontrada
if(str.charAt(i) == '>') { // encontrado caracter de fechamento de tag
tag = false;
auxStr += str.charAt(i);
novaStr += html(auxStr); // verifica se é uma tag válida
auxStr = "";
} else if (tag) {
if(str.charAt(i) == '<') { // encontrado caracter de abertura de tag
novaStr += auxStr;
auxStr = "";
}
auxStr += str.charAt(i);
}
} else {
if(str.charAt(i) == '<') { // encontrado caracter de abertura de tag
auxStr += str.charAt(i);
tag = true;
} else {
novaStr += str.charAt(i); // string sem as tags html
}
}
// caso seja achado '<' sem achar '>'
if(tag && i == (str.length() - 1)) {
novaStr += auxStr;
}
}
return novaStr;
}
// verifica se o conteude de str é uma tag html válida
public String html(String str)
{
boolean found = false;
String[] tags = {"A", "ADDRESS", "APPLET", "AREA", "B", "BASE", "BASEFONT", "BIG", "BLOCKQUOTE",
"BODY", "BR", "CAPTION", "CENTER", "CITE", "CODE", "DD", "DFN", "DIR", "DIV",
"DL", "DT", "EM", "FONT", "FORM", "FRAME", "FRAMESET", "H1", "H2", "H3", "H4",
"H5", "H6", "HEAD", "HR", "HTML", "I","IMG", "INPUT", "ISINDEX", "KBD", "LI", "LINK",
"MAP", "MENU", "META", "NOBR", "NOFRAMES", "OBJECT", "OL", "OPTION", "P","PARAM", "PRE",
"SAMP", "SCRIPT", "SELECT", "SMALL", "SPAN", "STRIKE", "S","STRONG", "STYLE", "SUB", "SUP",
"TABLE", "TD", "TEXTAREA", "TH", "TITLE", "TR", "TT", "U","UL", "VAR" };
for (int i =0; i < tags.length; i++) {
if (str.indexOf("<" + tags[i]) != -1 || // se tem <tag
str.indexOf(tags[i] + ">") != -1 || // se tem tag>
str.indexOf("<" + tags[i].toLowerCase()) != -1 || // se tem <tag maiusculo
str.indexOf(tags[i].toLowerCase() + ">") != -1) { // se tem tag> maiusculo
found = true;
}
}
if (found) return "";
return str;
}[/code]
Lekes, uma regex mata isso fácil fácil !!!
Em Javascript:
<*>
Em Java:
<.*>
essa regex vai casar tudo que estiver dentro das < >.