Ich habe es geschrieben, weil es notwendig wurde, die Escape-Verarbeitung in einer Umgebung durchzuführen, in der externe Bibliotheken nicht verwendet werden können. Umgebung ist Windows und Java 10
Da Standardargumente nicht für Java verwendet werden können, ist es besser zu überladen, um "ENT_QUOTES" als Zeichenfolgenargument zu erhalten, wenn Sie in Zukunft über Zeichencodes nachdenken.
function
public class Escape{
/**
& to &
" to " if flag.equals("ENT_COMPAT") flag.equals("ENT_QUOTES")
' to ' if flag.equals("ENT_QUOTES")
< to <
> to >
*/
public static String htmlspecialchars(String s, String flag){
String ret = s.replace("&","&").replace("<","<").replace(">",">");
if(flag.equals("ENT_COMPAT")){
return ret.replace("\"", """);
}else if(flag.equals("ENT_QUOTES")){
return ret.replace("'", "'").replace("\"",""");
}else if(flag.equals("ENT_NOQUOTES")){
return ret;
}
return ret;
}
}
Es ist nicht sehr hübsch, ich hatte das Gefühl, dass "return ret" in Ordnung wäre, wenn "ENT_COMPAT" und "ENT_QUOTES" nicht angegeben würden.
main
public static void main(String[] args){
System.out.println(htmlspecialchars("<script>alert(\"1\");</script>","ENT_COMPAT"));
System.out.println(htmlspecialchars("<script>alert(\"1\");</script>","ENT_NOQUOTES"));
System.out.println(htmlspecialchars("<script>alert('1');</script>","ENT_QUOTES"));
}
Ergebnis
>java Escape
<script>alert("1");</script>
<script>alert("1");</script>
<script>alert('1');</script>
Recommended Posts