Je l'ai écrit parce qu'il devenait nécessaire d'effectuer un traitement d'échappement dans un environnement où les bibliothèques externes ne peuvent pas être utilisées. L'environnement est Windows et Java 10
Puisque les arguments par défaut ne peuvent pas être utilisés pour java, il semble préférable de surcharger et de créer ʻENT_QUOTES` comme argument de chaîne de caractères si vous pensez aux codes de caractères dans le futur.
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;
}
}
Ce n'est pas très joli, j'ai senti que return ret;
serait bien si ʻENT_COMPAT et ʻENT_QUOTES
n'étaient pas spécifiés.
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"));
}
résultat
>java Escape
<script>alert("1");</script>
<script>alert("1");</script>
<script>alert('1');</script>
Recommended Posts