검색시 특수문자 제거 풀기
본문
검색어에서 []나 ()가 들어간 것을 검색하면 특수문자가 사라져 그 데이터가 불러와지지않습니다ㅠㅠㅠ
if ($stx != "") {
//$stx = htmlentities($stx);
$stx = urldecode($stx);
$sql_search .= " $where $sfl like '%$stx%'";
if ($sfl != "") {
$where = " and ";
}
$qstr = $qstr.'&sca='.urlencode($sca).'&page='.$page.'&save_stx='.urlencode($stx);
$stx 부분이 검색어를 받는 필드인데요 [] 나 ()가 들어간것은 검색이되지않고있어 특수문자가 제거되고있다고 생각합니다.. 그것을 풀거나 아니면 특수문자를 그대로 검색하게 되는 방법이있을까요?? encode 나 decode를 해도 안되네요.. $qstr 부분은 URL입니다
!-->답변 4
/lib/common.lib.php
위쪽 경로의 공통 함수 부분을 참고 해보시기 바랍니다. 해당 검색시 특수문자 제거하는 함수는 다음과 같습니다.
// 검색어 특수문자 제거
function get_search_string($stx)
{
$stx_pattern = array();
$stx_pattern[] = '#\.*/+#';
$stx_pattern[] = '#\\\*#';
$stx_pattern[] = '#\.{2,}#';
$stx_pattern[] = '#[/\'\"%=*\#\(\)\|\+\&\!\$~\{\}\[\]`;:\?\^\,]+#';
$stx_replace = array();
$stx_replace[] = '';
$stx_replace[] = '';
$stx_replace[] = '.';
$stx_replace[] = '';
$stx = preg_replace($stx_pattern, $stx_replace, $stx);
return $stx;
}
보시면 stx_pattern 에 []같은 함수가 들어갈경우 변환하도록 해주고 있습니다.
참고 하셔서 도움이 되셨으면 좋겠습니다.
!-->
if ($stx != "") {
//$stx = htmlentities($stx);
$stx = urldecode($stx);
if (strpos($stx, "[") !== false) {
$sql_search .= " $where $sfl like '%[%'";
$where = " and ";
}
if (strpos($stx, "(") !== false) {
$sql_search .= " $where $sfl like '%(%'";
$where = " and ";
}
$sql_search .= " $where $sfl like '%$stx%'";
if ($sfl != "") {
$where = " and ";
}
$qstr = $qstr.'&sca='.urlencode($sca).'&page='.$page.'&save_stx='.urlencode($stx);
}
이렇게해보세요
아래 링크는 참고하시구요
특수 문자를 해제 했으면 html 도 막아줘야 합니다.
[] 나 ()가 ,
DB에 그대로 들어 가나요?