검색 인터페이스에서 특수문자를 제거해야 하는 경우가 종종 발생할 수 있다. 특히 제목을 복사하여 검색창에 입력하는 경우에는 쉼표(,), 괄호, 느낌표(!), 물결무늬(~) 등의 특수문자가 입력되는 경우가 있는데 이런 경우에는 KRISTAL의 질의처리기(QP)가 연산자 오류가 반환하게 되어 사용자를 당황시킬 가능성이 있다. 특히 일반 사용자는 이러한 연산자 자체에 대해서 숙지하는 경우가 드물기 때문에 일반적인 검색 인터페이스에서는 입력창으로 받은 질의어에서 특수문자를 제거하는 것이 좋을 것이다.

특수문자를 제거하는 것은 JSP 또는 PHP 등으로 웹서버단에서 처리할 수도 있으며, 여기에서 보여주는 것과 같이 간단한 자바스크립트를 활용하는 방법도 있을 수 있다. 아래 Java Script는 입력된 질의에서 특수문자를 제거한 후 form을 submit하도록 한다.

    <script language="JavaScript" type="text/JavaScript"> <!-- function cleanQueryTerm( formName ) { var specialChars='~`!@#$%%^&*-=+\|[{]};:\',<.>/?'; var str=formName.search_word.value; var i, j; if (str == '') { alert('No Input'); return false; } for (i = 0; i < str.length; i++) { for (j = 0; j < specialChars.length; j++) { if (str.charAt(i) == specialChars.charAt(j)) str = str.replace(str.charAt(i), " "); } } formName.search_word.value = str; } --> </script> <form name="search_form" method="get" action = "clean_query.php" onSubmit='return cleanQueryTerm(document.search_form);'> Query <input type="text" name="search_word"> <input type="submit" value="Search"> </form>

FORM 문에서는 onsubmit에 cleanQueryTerm이라는 스크립트를 위와 같이 지정하여 사용하면 된다. 또한 제거할 특수문자를 추가하거나 삭제하고자 하는 경우에는 special characters (specialChar) 변수를 변경하여 사용할 수 있다.

출처 http://www.kristalinfo.com/K-Lab/clean_query.php
신고
by 화니뿡뿡 2010.11.04 09:41