nicclasMedlem sedan feb. 20001 061 inlägg Jag har denna kod i min servlet:
String searchString = request.getParameter("searchString");
och
out.print("<form name=\"searchbox\" action=\"Search\" ");
out.println("method=POST>");
out.println("<input type=text size=40 name=\"searchString\" value=\""+searchString+"\">");
out.println("<input type=\"submit\" name=\"submit\" value=\" Sök \">");
out.println("</form>");
Skriver jag in en sträng tex: nicclas "test test" (inklusive "-tecknen) så blir det fel i den HTML-kod som genereras då det första "-tecknet kommer att avsluta min value-tagg. Lösningen borde vara att "escapa" tecknen (typ addslashes i PHP). Hur göra?
/nicclas
AGMedlem sedan mars 20001 229 inlägg Det absolut lättaste borde vara att helt skippa "-tecknen i din html-kod. Men det är väl en smakfråga.
Medans ämnet sökmaskiner behandlas kanske det är något som råkar ha en överbliven sökmaskin som hanterar + - "" * etc.
Andreas
nicclasMedlem sedan feb. 20001 061 inlägg Jo, jag kör https://www.lucene.com och den funkar kanon :)
Att bara skippa "-tecknen i HTML koden löser ju tyvärr inte mitt problem. På något vis måste jag ju hindra att folk matar in "egen HTML-kod" i min sökruta.
SPiNMedlem sedan mars 20005 832 inlägg Du blir nog tvungen att ersätta förekomster av " med t.ex. " - eftersom att om du bara escape:ar så finns fortfarande \" kvar, och ditt attribut-värde bryts ändå.
private String replace(String haystack, String from, String to) {
if(haystack.indexOf(from) == -1)
return haystack;
StringBuffer stringBuffer = new StringBuffer();
int start = haystack.indexOf(from);
int copy = 0;
while(start != -1) {
stringBuffer.append(haystack.toCharArray(), copy, start - copy);
stringBuffer.append(to);
copy = start + from.length();
start = haystack.indexOf(from, copy);
}
stringBuffer.append(haystack.toCharArray(), copy, haystack.toCharArray().length - copy);
return stringBuffer.toString();
}
// För att escape:a:
String string = replace ( str, "\"", "\\\"" );
// För att replace:a
String string = replace ( str, "\"", "&quot;" );
nicclasMedlem sedan feb. 20001 061 inlägg SPiN: Jag har kommit fram till samma sak som du angående escape:ningen, tack så mycket för kodexemplet :)