Hi - Following on from a recent post about how to strip our special characters from a string before insertion to the db I have found this Java code - my question is, how can I turn this into something I can use with CF? I think I need to use the cfscipt tag but that's right on the boundaries of my knowledge base.. If anyone could please help I'd be ever so grateful - thank you!
package net.htmlescape;
/**
* HtmlEscape in Java, which is compatible with utf-8
* @author Ulrich Jensen, http://www.htmlescape.net
* Feel free to get inspired, use or steal this code and use it in your
* own projects.
* License:
* You have the right to use this code in your own project or publish it
* on your own website.
* If you are going to use this code, please include the author lines.
* Use this code at your own risk. The author does not warrent or assume any
* legal liability or responsibility for the accuracy, completeness or usefullness of
* this program code.
*/
public class HtmlEscape {
private static char[] hex={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
/**
* Method for html escaping a String, for use in a textarea
* @param original The String to escape
* @return The escaped String
*/
public static String escapeTextArea(String original)
{
return escapeSpecial(escapeTags(original));
}
/**
* Normal escape function, for Html escaping Strings
* @param original The original String
* @return The escape String
*/
public static String escape(String original)
{
return escapeSpecial(escapeBr(escapeTags(original)));
}
public static String escapeTags(String original)
{
if(original==null) return "";
StringBuffer out=new StringBuffer("");
char[] chars=original.toCharArray();
for(int i=0;i<chars.length;i++)
{
boolean found=true;
switch(chars[i])
{
case 60:out.append("<"); break; //<
case 62:out.append(">"); break; //>
case 34:out.append("""); break; //"
default:found=false;break;
}
if(!found) out.append(chars[i]);
}
return out.toString();
}
public static String escapeBr(String original)
{
if(original==null) return "";
StringBuffer out=new StringBuffer("");
char[] chars=original.toCharArray();
for(int i=0;i<chars.length;i++)
{
boolean found=true;
switch(chars[i])
{
case '\n': out.append("<br/>"); break; //newline
case '\r': break;
default:found=false;break;
}
if(!found) out.append(chars[i]);
}
return out.toString();
}
public static String escapeSpecial(String original)
{
if(original==null) return "";
StringBuffer out=new StringBuffer("");
char[] chars=original.toCharArray();
for(int i=0;i<chars.length;i++)
{
boolean found=true;
switch(chars[i]) {
case 38:out.append("&"); break; //&
case 198:out.append("Æ"); break; //Æ
case 193:out.append("Á"); break; //Á
case 194:out.append("Â"); break; //Â
case 192:out.append("À"); break; //À
case 197:out.append("Å"); break; //Å
case 195:out.append("Ã"); break; //Ã
case 196:out.append("Ä"); break; //Ä
case 199:out.append("Ç"); break; //Ç
case 208:out.append("Ð"); break; //Ð
case 201:out.append("É"); break; //É
case 202:out.append("Ê"); break; //Ê
case 200:out.append("È"); break; //È
case 203:out.append("Ë"); break; //Ë
case 205:out.append("Í"); break; //Í
case 206:out.append("Î"); break; //Î
case 204:out.append("Ì"); break; //Ì
case 207:out.append("Ï"); break; //Ï
case 209:out.append("Ñ"); break; //Ñ
case 211:out.append("Ó"); break; //Ó
case 212:out.append("Ô"); break; //Ô
case 210:out.append("Ò"); break; //Ò
case 216:out.append("Ø"); break; //Ø
case 213:out.append("Õ"); break; //Õ
case 214:out.append("Ö"); break; //Ö
case 222:out.append("Þ"); break; //Þ
case 218:out.append("Ú"); break; //Ú
case 219:out.append("Û"); break; //Û
case 217:out.append("Ù"); break; //Ù
case 220:out.append("Ü"); break; //Ü
case 221:out.append("Ý"); break; //Ý
case 225:out.append("á"); break; //á
case 226:out.append("â"); break; //â
case 230:out.append("æ"); break; //æ
case 224:out.append("à"); break; //à
case 229:out.append("å"); break; //å
case 227:out.append("ã"); break; //ã
case 228:out.append("ä"); break; //ä
case 231:out.append("ç"); break; //ç
case 233:out.append("é"); break; //é
case 234:out.append("ê"); break; //ê
case 232:out.append("è"); break; //è
case 240:out.append("ð"); break; //ð
case 235:out.append("ë"); break; //ë
case 237:out.append("í"); break; //í
case 238:out.append("î"); break; //î
case 236:out.append("ì"); break; //ì
case 239:out.append("ï"); break; //ï
case 241:out.append("ñ"); break; //ñ
case 243:out.append("ó"); break; //ó
case 244:out.append("ô"); break; //ô
case 242:out.append("ò"); break; //ò
case 248:out.append("ø"); break; //ø
case 245:out.append("õ"); break; //õ
case 246:out.append("ö"); break; //ö
case 223:out.append("ß"); break; //ß
case 254:out.append("þ"); break; //þ
case 250:out.append("ú"); break; //ú
case 251:out.append("û"); break; //û
case 249:out.append("ù"); break; //ù
case 252:out.append("ü"); break; //ü
case 253:out.append("ý"); break; //ý
case 255:out.append("ÿ"); break; //ÿ
case 162:out.append("¢"); break; //¢
default:
found=false;
break;
}
if(!found)
{
if(chars[i]>127) {
char c=chars[i];
int a4=c%16;
c=(char) (c/16);
int a3=c%16;
c=(char) (c/16);
int a2=c%16;
c=(char) (c/16);
int a1=c%16;
out.append("&#x"+hex[a1]+hex[a2]+hex[a3]+hex[a4]+";");
}
else
{
out.append(chars[i]);
}
}
}
return out.toString();
}
}