테스트 사이트 - 개발 중인 베타 버전입니다

검색시 특수문자 제거 풀기 채택완료

dudqls 2년 전 조회 3,175

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

</p>

<p>if ($stx != "") {</p>

<p>    //$stx = htmlentities($stx);</p>

<p>    $stx = urldecode($stx);</p>

<p>$sql_search .= " $where $sfl like '%$stx%'";</p>

<p>    if ($sfl != "") {</p>

<p>        $where = " and ";</p>

<p>    }</p>

<p> </p>

<p>$qstr  = $qstr.'&amp;sca='.urlencode($sca).'&amp;page='.$page.'&amp;save_stx='.urlencode($stx);</p>

<p>

$stx 부분이 검색어를 받는 필드인데요 [] 나 ()가 들어간것은 검색이되지않고있어 특수문자가 제거되고있다고 생각합니다.. 그것을 풀거나 아니면 특수문자를 그대로 검색하게 되는 방법이있을까요?? encode 나 decode를 해도 안되네요.. $qstr 부분은 URL입니다

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
복스리
2년 전

/lib/common.lib.php

 

위쪽  경로의 공통 함수 부분을 참고 해보시기 바랍니다. 해당 검색시 특수문자 제거하는 함수는 다음과 같습니다.

</p>

<p>// 검색어 특수문자 제거

function get_search_string($stx)  

{

    $stx_pattern = array();

    $stx_pattern[] = '#\.*/+#';

    $stx_pattern[] = '#\\\*#';

    $stx_pattern[] = '#\.{2,}#';

    $stx_pattern[] = '#[/\'\"%=*\#\(\)\|\+\&\!\$~\{\}\[\]`;:\?\^\,]+#';</p>

<p>    $stx_replace = array();

    $stx_replace[] = '';

    $stx_replace[] = '';

    $stx_replace[] = '.';

    $stx_replace[] = '';</p>

<p>    $stx = preg_replace($stx_pattern, $stx_replace, $stx);</p>

<p>    return $stx;

}</p>

<p>

 

보시면 stx_pattern 에   []같은 함수가 들어갈경우 변환하도록 해주고 있습니다.

참고 하셔서 도움이 되셨으면 좋겠습니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

 [] 나 ()가 ,

DB에 그대로 들어 가나요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

특수 문자를 해제 했으면 html 도 막아줘야 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

웅푸
2년 전

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

아래 링크는 참고하시구요

http://tcpschool.com/php/php_regularExpression_basic">코딩의 시작, TCP School

https://hongpage.kr/46">[php] strpos(), strrpos() 특정 문자열 검색하기 (hongpage.kr) 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인