用Java编写简易htmlspecialchars函数
创建一个不考虑字符编码的htmlspecialchars函数,使用Java编程。
由于在无法使用外部库的环境下需要进行转义处理,所以写了这段代码。环境是Windows上的Java10。
在Java中,由于无法使用默认参数,因此如果今后考虑字符编码等因素,最好通过重载来接受像ENT_QUOTES这样的字符串参数进行处理。
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;
}
}
如果没有指定 ENT_COMPAT 和 ENT_QUOTES,我觉得就可以返回 ret,但是不是特别漂亮。
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"));
}
>java Escape
<script>alert("1");</script>
<script>alert("1");</script>
<script>alert('1');</script>