채택완료

리스트에서 검색시 문의드립니다.

1.

리스트에 내용을 뽑아오도록 했습니다. 내용에 있는 단어로 검색을 하면 검색은 되는데 검색 단어 배경색이 변하지 않습니다.

제목이나 여분필드도 사용중인데 다 잘되는데 내용만 검색 단어 배경색이 바뀌지 않네요.

2. 

여분필드에 값이 12,000 입니다.(콤마가 들어있습니다.)

검색창에 12,000을 입력하면 검색이 안되네요.

참고로 마침표가 들어간 단어나 숫자는 검색이 됩니다.

여러 고수님들의 고견 부탁드립니다.

|

답변 3개 / 댓글 4개

채택된 답변
+20 포인트

검색 시 색상을 입히는 함수는 search_font() 입니다.

이를 응용하면 됩니다.

$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);

답변에 대한 댓글 2개

bbs/list.php에 아래처럼 추가해도 안되네요.

$list[$i]['content'] = search_font($stx, $list[$i]['content']);
$list[$i]['wr_content'] = search_font($stx, $list[$i]['wr_content']);

스킨 list.php에서 아래처럼 쓰고 있습니다.
<?php echo cut_str(strip_tags($list[$i]['wr_content']), 200)?>
<?php echo cut_str(strip_tags($list[$i]['wr_content']), 200)?>

스킨에 list.php에 위에소스 대신 아래소스 넣으니 되네요

<?php echo $list[$i]['wr_content'] ?>

답변감사합니다. 도움되었습니다.

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는 get_search_string해서 전달 합니다. 인젝션 방어고 12,000 으로 입력하시면 실제 디비에서 12000 를 instr하고 있는 row를 찾게 됩니다. 점은 한개까지는 되고 연속점은 안되는게 맞습니다. 

답변에 대한 댓글 2개

결국엔 안된다는 말씀인거죠?
\, 를 삭제하니 되긴하네요
다만 그러면 12000은 검색이 되질 않는군요.
감사합니다.

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