검색시 특수문자 제거 풀기

검색시 특수문자 제거 풀기

QA

검색시 특수문자 제거 풀기

답변 4

본문

검색어에서 []나 ()가 들어간 것을 검색하면 특수문자가 사라져 그 데이터가 불러와지지않습니다ㅠㅠㅠ


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);
}
이렇게해보세요

아래 링크는 참고하시구요

코딩의 시작, TCP School

[php] strpos(), strrpos() 특정 문자열 검색하기 (hongpage.kr) 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,543
© SIRSOFT
현재 페이지 제일 처음으로